精华内容
下载资源
问答
  • 这是UI响应工具一起加入到IE11开发者工具中的新功能内存分析的作用 内存分析工具可以帮助你了解应用的内存使用情况,从而帮助你避免内存泄漏或内存的过度消耗。要构建可供消费者长期运行的 Web 应用或...

    今天让我们再来认识下可以分析内存使用的工具:内存分析。这是和UI响应工具一起加入到IE11开发者工具中的新功能。

    内存分析的作用

    内存分析工具可以帮助你了解应用的内存使用情况,从而帮助你避免内存泄漏或内存的过度消耗。要构建可供消费者长期运行的 Web 应用或复杂的交互式应用,您必须重点关注应用的内存使用情况。

    尽管 JavaScript 具有完善的垃圾回收环境,但如果应用引用的对象未能及时释放或无法释放,通常会导致应用消耗过多的内存。内存工具可以显示页面中每一个对象的相关信息,无论该对象是 JavaScript 对象还是 DOM 对象,从而帮助您发现这些问题。例如,利用这些信息,您可以查看 占用了多少内存以及哪些对象使其处于活动状态。最佳做法是,您可以比较两个快照之间的差异,定位发生变化的点,从而找出应用占用过多内存的原因并予以修正。


    开始使用内存分析工具(CTRL + 7)

    如果你的网页正常打开后,但逐渐缓慢或有时崩溃,页面的内存使用可能有问题。

    加载页面到浏览器后,在F12中找到内存工具 (使用相机图标或 CTRL + 7),就可以开始进行分析了。

    如果你网页的内存问题是从开始就发生,但内存使用率没有持续增加,那就点击拍摄一个快照,点击进入快照的详细信息视图从中发现问题所在的位置。如果您的内存使用率是随着时间的推移而增加,你可以再拍摄一个新的快照来与之前的进行比较来发现问题。


    在上面的详细信息视图中,你会看到一个蓝色的小图标,鼠标悬停可以看到一个工具提示,为什么这个项目有一个潜在的问题。在上面的示例中的 DOM 节点未附加到 dom。这可以发生时节点已从 DOM 中,删除,但在其他地方指。

    支持三种视图类型的显示

    • 支配者视图显示所有单个 HTML 元素、 DOM 节点和您的代码创建的 JavaScript 对象。这是最详细的分析视图。

    • 类型视图可以查看组对象通过其构造函数,并给出的每种类型的计数。这样更容易地知道有多少阵列、有多少的字符串,并依此类推。这些条目都可以进一步展开查看。

    • 根视图显示主要根对象您可以展开以查看与它们相关联的子对象。

    在这三个视图中,都可以查看对象的大小和保留的大小。

    大小表示对象使用的内存量。

    保留大小表示通过删除对象回收的内存量。

    内存分析工具和前一篇中的UI响应工具都是我们了解网站性能的重要途径,而现在我们可以在IE11中方便的使用他们了。创建完网站并不是开发的结束,而是优化的开始,我们都希望自己的网站可以运行的越来越好,资源占用越来越低,可以在更多的电脑上都能表现流畅。

    所以这就需要我们特别了解我们的网站,但是很多网站内部的性能我们是不能够不会直观的表现在页面中,这时候就需要开发者工具发挥它们的作用了,在IE11之前,想要在IE浏览器上查看CPU占用时间和内存使用几乎是不可能的事,而到了IE11中,微软将UI响应和内存分析工具双双加入让我们可以方便的了解到网站的性能如何。

    而我们能做的就是希望通过对两个工具的简单介绍,让大家对它们有所了解。在IE11众多的改进和新功能让IE 11对于开发者更加友好,它已经从以前在开发者看来什么都不能做成长成了开发者必备的开发利器了。

    转自:http://blog.csdn.net/u011793198/article/details/17060113

    展开全文
  • 内存中栈堆的作用和区别

    千次阅读 2019-02-26 17:16:49
    首先内存中的堆栈数据结构中的堆栈是不同的两个东西。 内存中分为栈堆,以及静态存储区、程序代码区等。   内存模型:   从空间上存放内容上来说: 栈:内存空间小一些,栈的内存要远远小于堆内存,...

    首先内存中的堆栈和数据结构中的堆栈是不同的两个东西。

    内存中分为栈和堆,以及静态存储区、程序代码区等。

     

    内存模型:

     

    从空间上和存放内容上来说:

    栈:内存空间小一些,栈的内存要远远小于堆内存,如果你使用递归的话,那么你的栈很快就会充满。如果递归没有及时跳出,很可能发生StackOverFlowError问题。主要存放函数体的地址、函数的参数、局部变量临时变量等。

    堆:内存空间大一些,主要存放一些通过new出来的对象或者malloc申请的内存空间。

     

    静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。

    程序代码区:主要用于存放程序的二进制代码的空间。

     

     

    从申请释放方式上来说:

     

    栈:由编译器或者系统自动申请和回收,不受我们的控制。栈是为单个线程分配的,每个线程的栈空间是不一样的。当一个线程申请栈空间时,只要栈剩余的空间大小比申请的空间小,系统就自动为其分配空间,并且分配的空间是连续的,否则就会报错说明栈空间溢出。由于栈上的空间是自动分配自动回收的,所以栈上的数据的生存周期只是在函数的运行过程中,运行后就释放掉,不可以再访问。

    堆:分配的空间不连续,并且堆是为一个程序分配的,多个线程公用同一个堆内存。内存由我们自己手动申请和释放,例如malloc和new即可申请堆内存,free和delete即可将堆内存释放。如果我们不对堆内存释放,那么程序结束时会由系统自动回收。不过最好还是手动释放,防止出现内存泄漏。因为操作系统中有一个存放空闲存储块的链表,当程序员申请空间的时候,系统就会遍历整个链表,找到第一个比申请空间大的空闲块节点,系统会将该空闲块从空闲链表中删除,分配给程序,同时系统会记录这个空闲块的首地址和申请的大小,当程序员使用delete释放该空间的时候能够找到该存储区。另外,申请的空间不一定与找到的空闲块大小相同,多出来剩余的空闲区会被系统重新添加到空闲链表中。

     

    从访问速度来说:

    栈:因为栈是连续的内存,操作通常集中在一个内存块的附近,有利于处理器的高速访问。

    堆:因为一般申请的堆内存都是不连续的,所以访问起来也要慢一些。

    展开全文
  • oracle学习笔记 PGA内存作用和构成

    千次阅读 2017-01-09 16:18:55
    oracle学习笔记 PGA内存作用和构成 从这节课开始讲oracle非常重要的一个内存结构PGA 一)pga也非常重要 oracle的内存分两大块 一块是SGA, 里面有六个池子 Shared pool,Streams pool,Large pool,Java pool,Database...
    

    oracle学习笔记 PGA内存作用和构成


    从这节课开始讲oracle非常重要的一个内存结构PGA


    一)pga也非常重要


    oracle的内存分两大块


    一块是SGA,
    里面有六个池子
    Shared pool,Streams pool,Large pool,Java pool,Database buffer cache,Redo log buffer


    另外一块是PGA


    大家会发现在市面上好多书里面
    讲SGA讲了很多,但是PGA讲的很少


    老师很奇怪
    对oralce的实例来讲
    有sga有后台进程,有pga有serverprocess
    大家书上花了很多的力气很多的篇幅去讲sga去讲后台进程
    但是对serverprocess和pga讲的相对很少


    但在实际的工作中
    pga和serverprocess是最容易出问题的
    我们来解决问题的时候和我们去发现问题的时候
    往往是从pga和serverprocess入手


    所以老师讲课的时候
    把很多的精力给大家讲pga去讲serverprocess


    所以今天讲的pga非常重要
    但是pga管理起来相对比较容易一些
    在pga里面发现问题也比较容易一些
    所以说这块内容不是很难但是非常重要


    抛出第一个问题oralce数据库里面有两个东西很重要
    serverprocess和pga


    二)计算机语言和计算机的问题及错误


    这里老师又讲到软件经常出问题
    问题和错误是计算机及其软件避免不了的
    究竟是什么原因引起来的
    可以从软件的基础-计算机语言来剖析这个问题


    计算机硬件整体来讲它是一台机器,是一台电子机器
    它由高低电平驱动
    而且处理的是数字0和1
    内存和处理器中以高低电平来表示1和0
    磁盘中以磁场表示1和0


    它所具有的处理能力
    是制造者在制造它时赋予它的
    如它可以存储数据、执行命令和进行运算


    使用者所看到的都是由0和1经过计算得到的结果
    如文字和图片


    这个机器要运行需要人来启动,并时时需要人的操作


    它所拥有的固有处理能力
    是一些最基本的操作
    如数据的传输和加减运算等
    它们经过组合形成了更大的功能
    为了处理希望的更强大的功能
    这些基础处理和其组合经过了一代代的完善、精化
    结果形成了以超大规模集成电路为基础的各种芯片


    它的每种基础操作
    都是以0和1来表示的
    由0和1来控制由0和1来找数据和由0和1来计算
    这就是计算机机器的语言基础
    每个基础工作都由0和1构成
    再由一个个的这种基础语句构成机器语言体系
    在机器内部运行


    虽然机器语言是人创造的
    但是人想直接看出这些0和1到底在干什么
    不使用工具是做不到的更不要说编写它
    所以必须有人可以看懂的语言和它对应,来理解它和编写它
    就有了汇编语言
    它不是0和1组成,是由人可以理解的词语组成
    它仍然晦涩难懂,但是人经过努力是可以看懂的
    它的每一句也表示机器的一个基础动作
    每条汇编语言经过编译得到一条机器语句
    最终在计算机运行的仍是机器语言


    汇编语言仍然不适合人的使用习惯
    但是它是人操作计算机的必须途径
    为了实现大规模运算和人更容易的控制计算机
    不同的人根据自己的理解集成优化最底层计算机执行的指令
    又形成了各种高级语言


    因为基础硬件基本一致
    人类的思维方式也基本一致
    所以各种高级语言的结构和语法也是基本一致的


    高级语言在编写程序时相对非常的方便
    要让它在计算机中运行
    要先汇编成汇编语言,然后再编译成机器语言
    当机器语言得到运行时
    计算机各种语言才达到它的最终目的


    机器语言、汇编语言和高级语言就是通常人们所说的计算机语言。
    它们都在表达计算机做什么。


    在操作计算机时,我们对计算机呈献出来的内容
    如一个图片,一段文字或者一个对话框
    我们会产生反应
    如关闭它,保存它或者要进入下一步的操作
    我们需要点击鼠标或操作键盘给它回应
    这种交互
    其实也是和计算机的一种交流
    是计算机抽象意义下的一种语言。


    计算机语言和人类说话用的语言
    都是表达人类的意图和进行传递信息
    只是计算机语言是把人的意图告诉给计算机


    每种语言作为一种语言它有它的体系和作为一种语言的难度
    要使用它必须一步步的学习
    首先要看懂它然后再使用它


    当计算机运行起来,
    它就是编写程序者的思维
    另一个使用者同样可以和这个程序交流
    不过这种交流相对死板
    被套在固定的模式下和实现了的设定的方面
    原因是一个程序的局限性
    再怎么全面也只能设定现实世界的很少一部分
    也是现在所有智能化技术无法突破的限制


    计算机总是被操作的,视为自动化程度很高的工具可以理解它到底能做什么


    人无完人,人总是会出错的
    人所编写的程序也会出错
    这样会使计算机产生意想不到的结果


    如果你不了解计算机语言
    就无法和计算机沟通
    或者无法编写在计算机上可以运行的程序


    每个使用计算机语言编写程序的人都是有局限性的
    每种语言表达事物同样都是有局限性的
    它所编写出的程序当然也是有局限性的
    避免不了编写中自己的片面造成的程序的不完整和错误
    在很多没有考虑到的方面往往会出现各种各样的问题
    这样就可能产生编写的问题和错误


    理论上讲在程序编写、静止和执行时
    每一个指令和数据都是可以被修改的
    可人为的修改或硬件产生错误造成的修改
    这样就可能产生出运行时的错误


    计算机中每个程序只是在计算机整体程序的一部分
    和其它的程序有相互依存的关系
    在和其它程序同时运行时
    相互间避免不了矛盾和冲突
    这样就可能产生环境错误


    程序编写后还要由人来使用
    别人使用要适应编写者的思路
    要理解程序的功能
    别人的不习惯和不理解一样产生这样那样的问题


    这些问题和错误的根本就产生在由计算机语言编写、构成和运行程序的过程
    根源在计算机语言的使用者和运行者


    人类所有语言在表达事物时
    想做到完全正确没有遗误是不现实的
    没有人可以做到
    使用计算机的灵魂计算机语言也一样
    这就是计算机问题和错误产生的根本。


    oracle也由计算机语言组成
    就现在说的它的serverprocess组件来说
    虽然产生年代已很久远
    它在编写时同样的肯定做不到完美,肯定有编写上的疏忽
    再加上不断的升级修改也会造成代码的混乱
    运行时不管什么样的硬件一样会产生错误
    但就现在使用情况来说
    它的问题和错误主要还是产生在
    和周边功能代码的相互使用上
    如和SGA和PGA的相互使用。
    使用的长了就知道它们相互间的关系有多复杂和费解
    既要适应程序的思路又要了解计算机的知识
    对程序本身和对它的使用的问题和错误也一直不可避免的发生着。


    三)PGA内存空间的位置


    内存中有
    buffercache logbuffer sharedpool
    有一堆后台进程
    DBWr,smonitor,pmonitor,checkpoint,logwrite
    硬盘上有dbf文件,redolog文件、还有archivelog
    外部链接产生serverprocess,它有pga
    这就是oracle的一个体系结构


    平时在一般的书上五个后台进程讲的很多
    SGA讲的也很多
    唯独PGA和这一堆serverprocess讲的很少
    实际上这是重点
    工作中这是要理解的重点


    pga叫私有全局区或者叫程序全局区
    sga叫共享全局区或者系统全局区


    无论是serverprocess还是后台进程
    它们都可以访问sga这块内存区域
    sga是共享的一块内存区域


    pga属于每一个进程
    后台进程也有pga空间
    就是每一个进程都有一块内存空间
    只不过后台进程占的内存空间比较小我们不怎么关心它
    主要是serverprocess的pga它占的空间是比较大的,有时候会是很大
    而且还有多种问题


    serverprocess数量众多,动辄上百一二百
    有的一个数据库的serverprocess数量达到二百
    但是后台进程就十来个左右
    所以我们重点研究serverprocess以及它的pga


    每一个进程占用一块pga内存空间
    这块pga是专门的为serverprocess服务的
    一个pga空间只能它对应的那个serverprocess可以访问
    只有一个serverprocess可以访问它的pga内存空间


    也就是一个pga的内存空间作用非常简单
    存储的是和对应session会话相关的一些数据
    没有共享
    我们平时主要研究serverprocess的pga


    四)PGA的构成


    pga有很多部分构成
    有private sql area
    有session memory
    还有sql work areas


    这三块里面可以详细看一下
    但实际上没有大的意义


    我们看pga空间大家记住一句话就ok了


    一个会话,它的pga空间
    其实就是这个会话的工作区
    这个pga里面绝大部分空间放的是和这个会话相关的一些工作区


    会话主要干的事情是执行sql
    也就是sql工作相关的一些数据放到pga里面


    虽然说pga里面有很多空间
    如 私有sql区 session memory
    但主要是sql工作区
    另外两块现在不去理他
    它和我们的优化和性能关系不大


    实际上对我们来讲pga我们主要研究工作区
    研究pga实际上就是研究pga的sql工作区


    就是这个serverprocess在执行sql的时候
    它需要一个自己的工作空间


    就是如一个办公室
    每人有一个桌子,桌子后面有一块自己的空间
    这个空间称为我们的工作区


    比如我们办公室有一个我们喝茶水的地方
    对大家讲是共享的
    是一个道理


    研究pga就是研究每一个session的每一个会话的sql工作区
    这就是pga的构成


    五)SQL工作区的组成


    这个sql工作区都有哪些部分组成这是我们要讲的
    sql工作区主要有sort area、hash area和bitmap相关的几个area


    它里面有分成几大块
    有sort排序区,有hash区,还有位图相关的位图区
    这三块区


    oracle的结构
    有buffercache logbuffer
    对应磁盘dbf redolog
    从客户来的session,和session的pga


    我们通过session执行一个sql语句
    SQL> select * from t2;

            ID NAME
    ---------- --------------------
             1 xkj
             2 jiagulun
    这是一个sql语句
    数据返回来了


    执行另外一个sql语句
    SQL> select * from t2 order by id desc;

            ID NAME
    ---------- --------------------
             2 jiagulun
             1 xkj
    以id的降序把数据从t2里面取出来


    第一个语句随机的把数据取出来
    第二个进行了排序


    这两个sql语句有什么不一样?


    第一个sql语句随机取数据oracle怎么取呢


    select * from t;语句
    t表实际只有两行但假设有一万行数据


    第一、如果没有排序
    dbf中的block调到内存里面去
    假设数据在很多的block里面
    它会把block一个一个调到内存里面去
    然后从第一个block开始取数据
    取出一行
    取出后因为没有排序
    直接取出一行返回一行
    取出一行返回用户一行
    这是没有排序
    这时的pga空间几乎没有什么意义没有什么作用
    因为数据从buffer里面取出来以后直接返给我们的客户
    只是经过了pga一下
    这是没有排序


    第二、有排序时
    排序时会出现
    在会话的pga空间
    排序时取一万行数据是
    一万行数据取出来排好序以后返给用户


    这时oracle会首先从buffer里面把数据取出来
    取出以后不会直接返给用户
    一万行取出来以后
    放到pga里面去,在pga里面排序
    因为pga是这个会话的一个工作空间
    取出一万数据以后会放到pga里面去
    利用pga的空间缓存这一万行数据然后在pga里面进行排序
    排完序以后返给用户


    pga的第一个作用sort排序
    所以pga里面一定会有一部分空间
    是专门系统来排序的
    这块我们叫sort_area_size


    比如我需要排序的时候
    sort_area_size有两兆的空间
    我需要5M的空间来排序
    这时sort_area_size会增加
    在内存空间可用的情况下
    sort_area_size会增加到5M
    排完序以后sort_area_size会释放空间
    释放到什么程度
    有另外一个参数
    sort_area_retained_size
    比如sort_area_retained_size设到2M
    sort_area_size释放到2M的时候就不继续释放了就停了
    这是最低保留的空间
    这是排序区


    另外还有一个hash区
    oracle是个关系型数据库
    就是表和表之间有关系
    我们经常会从两个表或三个表里面同时取数据


    比如我想同时从三个表里面取数据
    这时我们就可能需要对三个表进行hash join
    hash连接的时候就会用到hash area
    用到hash_area_size
    在oracle数据库里面很少出现单独访问一个表的情况
    一般都访问多个表
    访问多个表大部分情况会出现hash连接
    hash连接就需要pga空间


    记住oracle执行sql语句的时候
    有两个特色
    第一个特色绝大部分情况下是多表同时访问
    就会用到hash
    同时我们在访问数据的时候
    绝大部分的情况下我会加orderby会加排序
    我们排完序以后把数据返给用户的时候,用户看到后更加友好
    所以在大部分sql语句里面会有排序会有hash连接


    所以pga里面的hash join和sort area size
    这两个空间很重要
    我们要时刻关注这个空间够不够
    我们很关注一个话题pga空间不够以后我们该去怎么办



    刚才讲了关于pga的作用和内存构成
    下节再讲pga的管理方式
    就会涉及到内存空间不够了以后怎么办等等一些内容


                         文字:韵筝

                                                                           2017年1月9日

    展开全文
  • 内存作用

    千次阅读 2007-11-07 13:40:00
    内存作用
    内存的作用
     
     
     

    内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。举一个例子来说,如果电脑只有128MB物理内存的话,当读取一个容量为200MB的文件时,就必须要用到比较大的虚拟内存,文件被内存读取之后就会先储存到虚拟内存,等待内存把文件全部储存到虚拟内存之后,跟着就会把虚拟内里储存的文件释放到原来的安装目录里了。
      当系统运行时,先要将所需的指令和数据从外部存储器(如硬盘、软盘、光盘等)调入内存中,CPU再从内存中读取指令或数据进行运算,并将运算结果存入内存中,内存所起的作用就像一个“二传手”的作用。当运行一个程序需要大量数据、占用大量内存时,内存这个仓库就会被“塞满”,而在这个“仓库”中总有一部分暂时不用的数据占据着有限的空间,所以要将这部分“惰性”的数据“请”出去,以腾出地方给“活性”数据使用。这时就需要新建另一个后备“仓库”去存放“惰性”数据。由于硬盘的空间很大,所以微软Windows操作系统就将后备“仓库”的地址选在硬盘上,这个后备“仓库”就是虚拟内存。在默认情况下,虚拟内存是以名为Pagefile.sys的交换文件保存在硬盘的系统分区中。
    一、手动设置虚拟内存
      在默认状态下,是让系统管理虚拟内存的,但是系统默认设置的管理方式通常比较保守,在自动调节时会造成页面文件不连续,而降低读写效率,工作效率就显得不高,于是经常会出现“内存不足”这样的提示,下面就让我们自已动手来设置它吧。
      ①用右键点击桌面上的“我的电脑”图标,在出现的右键菜单中选择“属性”选项打开“系统属性”窗口。在窗口中点击“高级”选项卡,出现高级设置的对话框.
      ②点击“性能”区域的“设置”按钮,在出现的“性能选项”窗口中选择“高级”选项卡,打开其对话框。
      ③在该对话框中可看到关于虚拟内存的区域,点击“更改”按钮进入“虚拟内存”的设置窗口。选择一个有较大空闲容量的分区,勾选“自定义大小”前的复选框,将具体数值填入“初始大小”、“最大值”栏中,而后依次点击“设置→确定”按钮即可,最后重新启动计算机使虚拟内存设置生效。
      建议:可以划分出一个小分区专门提供给虚拟内存、IE临时文件存储等使用,以后可以对该分区定期进行磁盘整理,从而能更好提高计算机的工作效率。

    二、量身定制虚似内存
      1.普通设置法
      根据一般的设置方法,虚拟内存交换文件最小值、最大值同时都可设为内存容量的1.5倍,但如果内存本身容量比较大,比如内存是512MB,那么它占用的空间也是很可观的。所以我们可以这样设定虚拟内存的基本数值:内存容量在256MB以下,就设置为1.5倍;在512MB以上,设置为内存容量的一半;介于256MB与512MB之间的设为与内存容量相同值。
      2.精准设置法
      由于每个人实际操作的应用程序不可能一样,比如有些人要运行3DMAX、Photoshop等这样的大型程序,而有些人可能只是打打字、玩些小游戏,所以对虚拟内存的要求并不相同,于是我们就要因地制宜地精确设置虚拟内存空间的数值。
      ①先将虚拟内存自定义的“初始大小”、“最大值”设为两个相同的数值,比如500MB;
      ②然后依次打开“控制面板→管理工具→性能”,在出现的“性能”对话框中,展开左侧栏目中的“性能日志和警报”,选中其下的“计数器日志”,在右侧栏目中空白处点击右键,选择右键菜单中的“新建日志设置”选项;
      ③在弹出的对话框“名称”一栏中填入任意名称,比如“虚拟内存测试”。在出现窗口中点击“添加计数器”按钮进入下一个窗口;
      ④在该窗口中打开“性能对象”的下拉列表,选择其中的“Paging File”,勾选“从列表中选择计数器”,并在下方的栏目中选择“%Usage Peak”;勾选“从列表中选择范例”,在下方的栏目中选择“_Total”,再依次点击“添加→关闭”结束
      ⑥在右侧栏目中可以发现多了一个“虚拟内存测试”项目,如果该项目为红色则说明还没有启动,点击该项,选择右键菜单中的“启动”选项即可
      接下来运行自己常用的一些应用程序,运行一段时间后,进入日志文件所在的系统分区下默认目录“PerfLogs”,找到“虚拟内存测试_000001.csv”并用记事本程序打开它,在该内容中,我们查看每一栏中倒数第二项数值,这个数值是虚拟内存的使用比率,找到这项数值的最大值,比如图中的“46”,用46%乘以500MB(前面所设定的虚拟内存数值),得出数值为230MB。
      用该数值可以将初始大小设为230MB,而最大值可以根据磁盘空间大小自由设定,一般建议将它设置为最小值的2到3倍。这样我们就可以将虚拟内存打造得更精准,使自己的爱机运行得更加流畅、更具效率。

    三、Windows虚拟内存加速密籍
      虚拟内存对于任何版本的Windows而言都是十分重要的。如果设置得当,它将极大地提升电脑的性能和运行速度。可是在默认状态下,Windows始终将虚拟内存设为物理内存的1.5倍。这样的话,如果用户安装2GB的内存,系统就会腾出高达3GB的硬盘空间作为虚拟内存。但以当前的主流应用软件和游戏对内存的需要来看,根本没有必要使用这么多的虚拟内存。那么,有没有什么秘技或绝招可使虚拟内存运用得更有效率或更显性能呢?
      1、分割存于多个硬盘
      将虚拟内存设在较快的硬盘上,的确可使虚拟内存的运作更有效率。但是若电脑上两个硬盘速度一样快,则应将虚拟内存平均分配在两个不同的硬盘上(并非同一硬盘的不同分区)。因为同步进行读写操作会更有效地提高系统整体的虚拟内存性能。
      举个例子,假设你原本在硬盘C上设置了700MB的虚拟内存,现在你可尝试重新分配,即把硬盘C改为350MB,硬盘D新增350MB的虚拟内存。理论上这样做会加快虚拟内存整体的读写操作.
      2、硬盘需有足够空间
      如果你不是很有经验的电脑用户,又或者没有特殊的使用要求,在Windows XP中选择“系统管理的大小”的方法来自动处理虚拟内存,一般情况下应该会比选择“自定义大小”的方法来得安全和稳定。不过,有一点大家必须注意,由于虚拟内存的“页面文件”(pagefile.sys)会随着电脑使用过程进行收缩和扩展,为使系统管理虚拟内存能够进行得顺利和更具弹性,我们必须保证分页文件所在的硬盘拥有足够的可用空间。
      3、最小值等于最大值
      选择“自定义大小”的方法来处理虚拟内存,并将最大值和最小值都设为同一数值。有很多人都相信用这种方法来处理虚拟内存有助于提高系统的性能。他们所持的理由是,当最大值和最小值都相等时,系统无需时刻进行收缩和扩展页面文件的动作。省去了这些工作,相应地就是提高系统效率。
      这种方法,很多人坚信有效,但同样地,也有人指出其实并没有效果。但不管怎样也好,如要将最大值和最小值设为相等,我们必须坚守一个原则,那就是虚拟内存的大小必须足够,否则系统轻则会出现效率下降(要进行更多复写动作来腾出空间),严重的更会造成系统不稳定。
      4、整理页面文件
      文件数据保存在硬盘上久了,文件碎片(fragment)自然会产生。要保持或提高硬盘的工作效率,我们应不时为硬盘进行一次碎片整理。所谓虚拟内存,其实也是硬盘上的资料文件,那么虚拟内存是否也应该像普通文件般需要整理呢?
      Windows系统处理页面文件(即虚拟内存)的方法有别于一般的文件。相比之下,页面文件比一般文件更少出现碎片,为页面文件进行整理通常是没有必要的。事实上,当Windows XP进行磁盘碎片整理时,页面文件不会牵涉其中。
      虽然Windows不会对页面文件进行整理,但事实上页面文件也有碎片存在。追求“尽善尽美”的朋友可能仍想对页面文件进行碎片整理。大家不妨试试下面的方法:
      在桌面“我的电脑”图标上单击鼠标右键,在随后出现的功能菜单中选“属性”。进入系统属性的设置窗口,用鼠标点选“高级”-->“性能”-->“设置”-->“高级”-->“更改”,在随后出现的“虚拟内存”设置窗口中选中“无分页文件”一项。最后单击“设置”按钮退出,并重新启动电脑。
      重新启动后,检查一下磁盘根目录中还有没有pagefile.sys页面文件存在,如有就将之删除。清除掉虚拟内存的页面文件后,现在我们再进行磁盘碎片整理。完成后,按照前面的步骤重新设置一定数量的虚拟内存,并启动电脑使之生效。经上述方法处理后,新得出的页面文件将会是没有碎片的。
      另外,如果想查看页面文件碎片的具体情况呢?启动磁盘碎片整理程序,为存在有页面文件的硬盘进行一次“分析”,再点选“查看报告”,看看“页面文件碎片”一栏便会一目了然。

     
    展开全文
  • 虚拟内存(硬盘):虚拟的不是物理内存,而是代替物理内存行使存储的功能,物理内存的运行程序的功能是无法用虚拟内存来完成 物理内存与虚拟内存的关系:当运行程序过多,物理内存不够用时,系统会将一部分硬盘空间...
  • 在实际应用中内存数据库主要是配合oracle或mysql等大型关系数据库使用,关注性能,作用类似于缓存,并不注重数据完整性数据一致性。基于键值型的内存数据库比关系型更加易于使用,性能可扩展性更好,因此在应用...
  • Java中堆内存和内存什么区别

    千次阅读 2018-05-19 23:17:26
    Java把内存分成两种,一种叫做栈内存,一种叫做堆内存在函数中定义的一些基本类型的变量对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过...
  • 内存管理的概念及作用

    千次阅读 2018-05-25 13:34:26
    内存管理的功能:1.内存空间的分配与回收:由操作系统完成主存储器空间的分配管理,使程序员摆脱存储分配的麻烦,提高编程效率2.地址转换:在多道程序环境下,程序中的逻辑地址与内存中的物理地址不可能一致,因此...
  • Java内存模型是什么

    千次阅读 2018-07-13 10:45:45
    本文,就来整体的介绍一下Java内存模型,目的很简单,让你读完本文以后,就知道到底Java内存模型是什么,为什么要有Java内存模型,Java内存模型解决了什么问题等。本文中,有很多定义说法,都是笔者自己理解后定.....
  • 1.什么是计算机内存内存指的是内存储器 ,内存主要是用来临时存贮数据 ; EX:电脑中调用的数据,就需要从硬盘读出,发给内存,然后内存再发给CPU(也可以理解成是外存CPU之间的缓存)。 在计算机的组成结构中,有一...
  • 服务器的内存和普通的内存什么不一样 一、首先在选购上来说 普通的内存比如PC内存等等,大家通常都是在看内存条是DDR3还是DDR4,频率是多少,2133还是3000,用的是什么颗粒?内存时序是多少?4G内存条多少钱,8G...
  • 操作系统虚拟内存作用概括

    千次阅读 2016-10-14 17:41:28
    其次,虚拟内存主要目的不是为了增加“物理内存”,而是将内存中一段时间不用的数据暂时的转移到磁盘或其他介质上去,从而为其他新的数据腾出内存空间。当被转移出去的数据需要用的时候再移回内存中来。主要技术就是...
  • 什么是虚拟内存

    万次阅读 多人点赞 2016-03-10 20:17:46
    虚拟内存是计算机系统内存管理的一种技术。 它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时...
  • 本文中,有很多定义说法,都是笔者自己理解后定义出来的。希望能够让读者可以对Java内存模型有更加清晰的认识。当然,如有偏颇,欢迎指正。   为什么要有内存模型   在介绍Java内存模型之前,先来看一下...
  • 全局作用域,局部作用域,语句作用域,类作用域,命名空间作用文件作用域。 1>全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要...
  • 普通内存、ECC内存和REG ECC内存什么不同? 前言 我们都知道,在INTEL平台,北桥负责与CPU的联系,并控制内存、AGP、PCI数据在北桥内部传输。基本上只要主板芯片组确定,那么其支持的内存类型也就确定了。 ...
  • 基础知识篇——堆内存和内存

    万次阅读 多人点赞 2018-11-01 09:05:00
    数据结构中的堆栈 栈 是一种连续储存的数据结构,具有先进后出的性质。 通常的操作有入栈(压栈),出栈栈顶元素。想要读取栈中的某个元素,就是将其之间的所有元素出栈才能完成。 堆 是一种非连续的树形储存...
  • 内存屏障的作用:barrier()

    千次阅读 2013-07-07 13:18:50
    在我看来,内存屏障主要解决了两个问题:单处理器下的乱序问题多处理器下的内存同步问题。 为什么会乱序? CPU的流水线机制:流水线是并行的。比如说CPU有一个加法器一个除法器,那么一条加法指令一条除...
  • 内存单通道双通道是什么意思

    千次阅读 2007-10-18 15:13:00
    我的主板说明书说:支持两根单通道DDR333/266内存,还说经过测试的内存有以下几种没有出现不兼容的情况:ABIT GF4MX440-8X、ABIT GF4MX440、Gainward GF4TI4200、Gainward GF2MX400、七彩虹GF4MX440-8X 是什么意思?...
  • 什么是Java内存模型?

    千次阅读 2018-03-17 00:00:00
    本文转载自公众号 占小狼的博客说”JVM内存模型“,有人会说是关于JVM内存分布(堆栈,方法区等)这些介绍,也有地方说(深入理解JVM虚拟机)上说Java内存模型是JVM的...时间久了,我也把内存模型和内存结构给搞混了
  • Java内存划分分配

    千次阅读 2018-10-18 15:03:41
    在了解Java每个内存区域的功能之后,进一步分析Java对象如何的创建对象的内存分配,以及如何访问对象中的内存。最后学习一下Java堆内存的分代划分和内存分配。 Java内存区域划分 首先通过一张图来看一下Java虚拟机...
  • 进程概述和内存分配

    万次阅读 2016-06-16 17:28:08
    进程 一个进程的内存布局是什么样的...初始化数据段包含了显示初始化的全局变量静态变量,当程序加载到内存时,从可执行文件中读取这些变量的值未初始化数据段包含了未进行显式初始化的全局变量静态变量,程序启动
  • jvm内存模型和内存分配

    千次阅读 2016-03-12 22:21:29
    jvm内存模型和内存分配 1.什么是jvm? (1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的。 (2)jvm包含一套字节码指令集,一组寄存器,一...
  • 内存的可靠性、可用性诊断功能内存RAS) RAS - Reliability, Availability and Serviceability Reliability:可靠性。指的是系统必须尽可能的可靠,不会意外的崩溃,重启甚至导致系统物理损坏,这意味着一个...
  • JVM内存区域划分及其作用

    千次阅读 2018-06-21 21:34:26
    堆一样,是各个线程共享的内存区域,用于存储已被虚拟机加载的类信息、常量、静态变量、编译器编译后的代码 ( 也就是存储字节码文件。 .class) 等数据,这里可以看到常量也会在方法区中,是因为方法区中有一个...
  • 内存压缩是什么?有什么用?

    千次阅读 2011-10-13 17:00:00
    那个内存清理有什么不同?回答列表1 内存压缩技术介绍为节省存储空间或传输带宽,人们已经在计算机系统中广泛地使用了数据压缩技术。在磁介质存储数据或网络传输数据时,人们使用基于硬.. 1 内存压缩技术介绍 ...
  • DRAM内存原理(二)结构和功能

    万次阅读 2014-12-08 09:03:22
    每个DRAM基本单元代表一个“位”——Bit(也就是一个比特),并且有一个由列地址行地址定义的唯一地址。8个比特组成一个字节,它可代表256种组合(即2的八次幂),字节是内存中最小的可寻址单元。DRAM基本单元不能...
  • jvm内存结构和内存模型

    千次阅读 2019-09-04 17:42:46
    JVM内存结构 《深入理解Java虚拟机(第2版)》中的描述是下面这个样子的: JVM的内存结构大概分为: 堆(Heap):线程共享。所有的对象实例以及数组都要在堆上分配。回收器主要管理的对象。 方法区(Method ...
  • 笔记本内存和台式机内存的区别

    千次阅读 2020-05-07 22:15:19
    相关知识超链接放在最前面:(正在写相关文章补充ing,超链接可能还没有) 笔记本CPU台式机CPU区别:https://blog.csdn.net/azj2019/article/details/105981673 ...笔记本内存和台式机内存其实这两个区别并...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 690,154
精华内容 276,061
关键字:

内存功能和作用是什么