精华内容
下载资源
问答
  • 二、主要功能简介 1.内存剖析 Memory profiler JProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾...

    一、安装JProfiler

           从http://www.ej-technologies.com/下载5.1.2并申请试用序列号

     

    二、主要功能简介

    1.内存剖析 Memory profiler

    JProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。

    • 所有对象 
      显示类或在状况统计和尺码信息堆上所有对象的包。你可以标记当前值并显示差异值。
    • 记录对象 Record objects 
      显示类或所有已记录对象的包。你可以标记出当前值并且显示差异值。
    • 分配访问树 Allocation call tree 
      显示一棵请求树或者方法、类、包或对已选择类有带注释的分配信息的J2EE组件。
    • 分配热点 Allocation hot spots 
      显示一个列表,包括方法、类、包或分配已选类的J2EE组件。你可以标注当前值并且显示差异值。对于每个热点都可以显示它的跟踪记录树。

    2.堆遍历 Heap walker

    在JProfiler的堆遍历器(Heap walker)中,你可以对堆的状况进行快照并且可以通过选择步骤下寻找感兴趣的对象。堆遍历器有五个视图:

    • 类 Classes 
      显示所有类和它们的实例。
    • 分配 Allocations 
      为所有记录对象显示分配树和分配热点。
    • 索引 References 
      为单个对象和“显示到垃圾回收根目录的路径”提供索引图的显示功能。还能提供合并输入视图和输出视图的功能。
    • 数据 Data 
      为单个对象显示实例和类数据。
    • 时间 Time 
      显示一个对已记录对象的解决时间的柱状图。

    3. CPU 剖析 CPU profiler

    JProfiler 提供不同的方法来记录访问树以优化性能和细节。线程或者线程组以及线程状况可以被所有的视图选择。所有的视图都可以聚集到方法、类、包或J2EE组件等不同层上。CPU视图部分包括:

    • 访问树 Call tree 
      显示一个积累的自顶向下的树,树中包含所有在JVM中已记录的访问队列。JDBC,JMS和JNDI服务请求都被注释在请求树中。请求树可以根据Servlet和JSP对URL的不同需要进行拆分。
    • 热点 Hot spots 
      显示消耗时间最多的方法的列表。对每个热点都能够显示回溯树。该热点可以按照方法请求,JDBC,JMS和JNDI服务请求以及按照URL请求来进行计算。
    • 访问图 Call graph 
      显示一个从已选方法、类、包或J2EE组件开始的访问队列的图。

    4. 线程剖析 Thread profiler

    对线程剖析,JProfiler提供以下视图:

    • 线程历史 Thread history 
      显示一个与线程活动和线程状态在一起的活动时间表。
    • 线程监控 Thread monitor 
      显示一个列表,包括所有的活动线程以及它们目前的活动状况。
    • 死锁探测图表 Deadlock Detection 
      显示一个包含了所有在JVM里的死锁图表。
    • 目前使用的监测器 Current monitor useage 
      显示目前使用的监测器并且包括它们的关联线程。
    • 历史检测记录 History usage history 
      显示重大的等待事件和阻塞事件的历史记录。
    • 监测使用状态 Monitor usage statistics 
      显示分组监测,线程和监测类的统计监测数据。

    5.VM 遥感勘测技术 VM telemetry

    观察JVM的内部状态,JProfiler提供了不同的遥感勘测视图,如下所示:

    • 堆 Heap 
      显示一个堆的使用状况和堆尺寸大小活动时间表。
    • 记录的对象 Recorded objects 
      显示一张关于活动对象与数组的图表的活动时间表。
    • 垃圾回收 Garbage collector 
      显示一张关于垃圾回收活动的活动时间表。
    • 类 Classes 
      显示一个与已装载类的图表的活动时间表。
    • 线程 Threads 
      显示一个与动态线程图表的活动时间表。

     

    三、实战

    (一)任务目标

    找出项目中内存增大的原因

      (二)配置说明

               操作系统:Windows2003

                  Web容器:Tomcat5.0.23

                  JDK版本:sun1.4.2

                  监控类型:本地

                  Jprofiler安装路径:D:/jprofiler5

                  Tomcat安装路径:D:/Tomcat5

    (三)  测试项目

    1.  新建WEB项目test

    2.  建包cn.test

    3.  在该包下建类文件TestMain.java 和 TestBean.java

    package cn.test;

    public class TestBean {

       String name = "";

    }

     

    package cn.test;

    import java.util.ArrayList;

    publicclass TestMain {

    publicstatic ArrayListlist =new ArrayList(); //存放对象的容器

    public static int counter = 0;    //作统计用

         }

     

           4.建测试用的JSP文件init1.jsp、init2.jsp

    Init1.jsp(每次执行都创建1万个TestBean对象)

    <%@ pagelanguage="java"import="cn.test.*"pageEncoding="ISO-8859-1"%>

    <!DOCTYPEHTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

      <head>

        <title>init</title>

      </head>

      <body><%

        for(int i=0;i<10000;i++){

           TestBean b = new TestBean();

           TestMain.list.add(b);      

        }

        %>

        SIZE:<%=TestMain.list.size()%><br/>

        counter:<%=TestMain.counter++%>

      </body>

    </html>

    Init2.jsp和init1.jsp一模一样即可(后面有用)。

     

     

    (四)     配置测试用例

    1.  点击d:/jprofiler5/bin/jprofiler.exe

    2.  执行菜单SessionàIntegration WizardsàNew ServerIntegration

     

     

     

    选择是本地测试还是远程测试:

    选择tomcat运行的脚本文件:

    选择虚拟机的类型:

    选择监控端口:

    用默认的即可

    选择Web容器是否和Jprofiler一起运行:

    默认即可

    配置提示:

      在“远程控制”的时侯要仔细阅读一下。

    然后选择立即起动,开始运行。

     

    点击“OK”,我们可以看到另外一个小窗口出来了:

    Jprofiler的窗口为:

    这样我们就可以进行监控了!

    (五)     开始测试

    1.  在IE地址栏中输入:http://localhost/test/init1.jsp,执行一次,我们可以在内存视图中看到cn.test.TestBean对象被创建了10000次:

    2.标记现在的状态,然后再执行init1.jsp和,init2.jsp可以让我们找到哪些类在调用后没有被释放(很重要!!!)

    查看哪些类被发生了变化:

    红色的变成是发生变化的对象及其数量。

    我刚才执行了4次init1.jsp和1次init2.jsp,正好产生了50000个TestBean对象,和图示显示的一样。

    3.  过一会后,按F4键进行垃圾回收。但回收完成后,这些对象依然存在,说明某些地方对这个类的引用没有被释放!

    4.  找出是哪些地方使用了TestBean类,并且没有释放它们

    在cn.test.TestBean对象上点击右键选择“Take Heap Snapshot for Selection”,观察它的heap

    下一步:

    点击“OK”:

    在该类中点击右键,在出现的菜单中选择“Use Selected Objects”:

    出现如下窗口:

    选择”Allocations”,点击“OK”,然后我们要的结果就出来了

    图中显示调用此类的地方是init1.jsp和init2.jsp,并且各自占用的比率都列出来了。

    既然问题的所在找出来了,接下来就该去解决问题了!

    (五)总结

    其实,我们在测试内存占用时还可以另外写一个释放内存的JSP文件来配合测试,会更清楚一些:

    Free.jsp

    <%@ pagelanguage="java"import="java.util.*,cn.test.*"pageEncoding="ISO-8859-1"%>
    
    <!DOCTYPEHTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    
      <head>
    
        <title>init</title>
    
      </head> 
    
      <body>  
    
        <%TestMain.list.clear();%>  collection OK!
    
      </body>
    
    </html>

    在点击完init1.jsp或init2.jsp后,可以看到内存是TestBean对象的数量增加了,然后执行free.sjp,接着再执行F4进行垃圾回收,立刻可以看到TestBean对象被释放掉了。

    展开全文
  • 主要介绍了PHP内存缓存功能memcached示例,简单的介绍了memcached,是php操作memcached的典型应用,有需要的朋友可以来了解一下,
  • 主要介绍了Android 一键清理、内存清理功能实现,非常具有实用价值,需要的朋友可以参考下。
  • 在实际应用中内存数据库主要是配合oracle或mysql等大型关系数据库使用,关注性能,作用类似于缓存,并不注重数据完整性和数据一致性。基于键值型的内存数据库比关系型更加易于使用,性能和可扩展性更好,因此在应用...

    内存数据库从范型上可以分为关系型内存数据库和键值型内存数据库。在实际应用中内存数据库主要是配合oracle或mysql等大型关系数据库使用,关注性能,作用类似于缓存,并不注重数据完整性和数据一致性。基于键值型的内存数据库比关系型更加易于使用,性能和可扩展性更好,因此在应用上比关系型的内存数据库使用更多。本文首先比较FastDB、Memcached和Redis主流内存数据库的功能特性,再从性能上比较H2、Memcached和Redis三种内存数据库,希望大家能够根据自己业务需求的具体特点,选择合适的开源产品。

    主流内存数据库功能比较
    FastDB
    FastDb是高效的关系型内存数据库系统,具备实时能力及便利的C++接口。FastDB针对应用程序通过控制读访问模式作了优化。通过降低数据传输的开销和非常有效的锁机制提供了高速的查询。对每一个使用数据库的应用数据库文件被影射到虚拟内存空间中。因此查询在应用的上下文中执行而不需要切换上下文以及数据传输。fastdb中并发访问数据库的同步机制通过原子指令实现,几乎不增加查询的开销。

        FastDB的特点包括如下方面:
    

    1、FastDB不支持client-server架构因而所有使用FastDB的应用程序必须运行在同一主机上;

    2、fastdb假定整个数据库存在于RAM中,并且依据这个假定优化了查询算法和接口。

    3、fastdb没有数据库缓冲管理开销,不需要在数据库文件和缓冲池之间传输数据。

    4、整个fastdb的搜索算法和结构是建立在假定所有的数据都存在于内存中的,因此数据换出的效率不会很高。

    5、Fastdb支持事务、在线备份以及系统崩溃后的自动恢复。

    6、fastdb是一个面向应用的数据库,数据库表通过应用程序的类信息来构造。

        FastDB不能支持Java API接口,这使得在本应用下不适合使用FastDB。
    

    Memcached
    Memcached是一种基于Key-Value开源缓存服务器系统,主要用做数据库的数据高速缓冲,并不能完全称为数据库。

        memcached的API使用三十二位元的循环冗余校验(CRC-32)计算键值后,将资料分散在不同的机器上。当表格满了以后,接下来新增的资料会以LRU机制替换掉。由于    memcached通常只是当作缓存系统使用,所以使用memcached的应用程式在写回较慢的系统时(像是后端的数据库)需要额外的程序更新memcached内的资料。
    
        memcached具有多种语言的客户端开发包,包括:Perl、PHP、JAVA、C、Python、Ruby、C#。
    

    Redis
    Redis是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了C++、Java、Python,Ruby,Erlang,PHP客户端。

    小结
    由于不支持Java客户端,因此FastDB并不合适。在Memcached和Redis的比较上,分为性能和功能两个方面。

        关于性能方面的详细内容建议继续阅读后面的内容,我对H2、Memcached和Redis亲自从读写删三方面进行了性能测试。
    
        因此从内存数据库功能特性方面综合来看,推荐使用Redis。
    

    主流内存数据库性能比较
    测试目的
    本次性能测试选择目前成熟度和使用度都比较高的内存数据库,通过读写的性能测试比较这些主流数据库中的性能优劣。在性能测试过程中同时记录各个产品的稳定性。

        比较的内存数据库包括Memcached、Redis、H2。
    

    测试方法
    性能测试主要包括对内存数据库读、写、删除的测试。

        使用单个线程将一定量的记录插入内存数据库,记录插入时间,每条记录的数据大小相同;然后在进行一定量的读操作,记录读出时间;最后将这些数据删除,记录时间。
    

    根据读写效率综合评估内存数据库性能。

        具体的测试数据量为:
    

    1、插入10000条数据,记录时间;

    2、读取上述10000条数据,记录时间;

    3、将上述10000条数据逐条删除,记录时间。

    测试环境
    本次测试共需要使用一台联系服务器,配置如下:

    CPU:Intel® Xeon® CPU E7-4830 @ 2.13GHz,共32个CPU,每个CPU8核;

    内存:物理内存8G,交换分区9G;

    磁盘:物理磁盘250G;

    网卡:单网卡,带宽上限1000Mbps,全双工

        在该服务器上搭建中标云平台,并创建虚拟机,三种内存数据库均部署在该虚拟机中,虚拟机配置为:
    

    CPU:Intel® Xeon® CPU E7-4830 @ 2.13GHz,共2个CPU,每个CPU8核;

    内存:物理内存1G,交换分区5G;

    磁盘:物理磁盘50G;

    网卡:单网卡,带宽上限1000Mbps,全双工

        测试应用部署在一台普通台式机中,台式机配置为:
    

    CPU:Intel® Xeon® CPU E7-4830 @ 2.13GHz,共2个CPU,每个CPU2核;

    内存:物理内存1G,交换分区2G;

    磁盘:物理磁盘64G;

    网卡:单网卡,带宽上限1000Mbps(共享),全双工

        台式机和服务器采用普通内部局域网连接。
    

    内存数据库部署
    Memcached
    Memcached的安装前先安装依赖的libevent库,步骤如下:

    tar -zxvf libevent-2.0.12.stable.tar.gz

    cd libevent-2.0.12.stable

    ./configure –prefix=/usr/libevent

    make

    make install

        安装的memcached需要从源码编译安装,步骤如下:
    

    tar -zxvf memcached-1.4.15.tar.gz

    cd ./memcached-1.4.15

    ./configure –with-libevent=/usr/libevent

    make

    make install

    Redis
    Redis的安装也是从源码开始,将Redis源码压缩包拷贝到/usr/local/目录下,安装步骤如下:

    tar -zxvf redis-2.6.14.tar.gz

    cd ./redis-2.6.14

    make

        开启Redis服务器和Redis自带的客户端访问工具如下:
    

    src/redis-server

    src/redis-cli

    H2
    H2的安装较为简单,直接使用unzip命令进行解压即可。

        解压之后进入bin目录,并修改h2.sh文件中的Java命令启动的主类和选项为:
    

    org.h2.tools.Server -tcpAllowOthers -webAllowOthers

        然后执行脚本h2.sh即可启动数据库。H2提供本地命令行控制台,启动方式为:
    

    java -cp *.jar org.h2.tools.Shell

        一般来说,使用图形化的Web界面更为方便。
    

    测试结果
    Memcached的测试结果如下:

    Benchmark result has listed as follow:

    Set Data spent time (ms): 344

    Get Data spent time (ms): 8297

    Delete Data spent time (ms): 187

        Redis的测试结果如下:
    

    Benchmark result has listed as follow:

    Set Data spent time (ms): 5594

    Get Data spent time (ms): 6312

    Delete Data spent time (ms): 3969

        H2的测试结果如下:
    

    Benchmark result has listed as follow:

    Set Data spent time (ms): 14609

    Get Data spent time (ms): 14859

    Delete Data spent time (ms): 10469

    结果分析
    从结果来看,Memcached的性能最好,Redis其次,而H2的性能则最差。细节方面,Redis的读性能要略好于Memcached。

        在执行本次测试之前并没有对各个软件进行优化,因为测试数据总量10000条,每条不到1KB,总共不过10MB,而且单个线程,所以默认配置应该都是足够的,因此测试结果能够反映各自的性能情况。
    
        产生这个结果的原因主要是三种软件的功能丰富程度不同,以及使用内存的情况不同。H2作为关系型数据库,具有持久存储功能,因此还是大量使用了磁盘,而且H2也要考虑数据完整性和原子性等关系数据库的关键特性;而Redis采用Key-Value范型,不能达到关系型数据库那样的可靠性,实现的特性少,可以更加关注性能,但是为了防止数据丢失,支持持久存储机制;而同样是Key-Value方式的Memcached则不支持持久存储,纯内存软件。
    
        还有一项与性能无关的情况需要指出,在编写测试应用的时候,Memcached操作的代码量最少,其次为Redis,H2所需代码最多。
    

    结论
    综合上述功能特性的分析和性能测试结果分析,对于内存数据库的选型结论如下:

    1、如果无特殊要求,则Memcached综合性能最好,编程最方便,推荐使用;

    2、如果读操作很多,而且需要内存数据库提供持久存储以避免重启之后数据丢失,则推荐使用Redis。

        在性能方面,可以参考资料[6]中的比较。最终的比较结果表明,在小文件和大文件的读写性能上,Redis都要胜过Memcached,特别是在大文件读写方面,memcached性能不高。
    
        在功能方面,可以参考资料[7]中的分析。该分析中指出Redis对Memcached的最大的补充是对持久化的支持,这使得在机器重启或者升级时数据不至于丢失。
    
        我的测试代码采用Java开发,开发环境为Eclipse 3.7,如果需要我的全部测试代码,可以在评论里留下邮箱,我会发过去。
    

    参考资料
    [1] Memcached Build from Source.http://code.google.com/p/memcached/wiki/NewInstallFromSource.

    [2] Configure Memcached.http://code.google.com/p/memcached/wiki/NewConfiguringServer.

    [3] Redis Document.http://redis.io/documentation.

    [4] Jedis 2.0 API.http://www.jarvana.com/jarvana/view/redis/clients/jedis/2.0.0/jedis-2.0.0-javadoc.jar!/index.html.

    [5] H2 Database Engine Version 1.3.172 (2013-5-25).http://www.h2database.com/html/main.html.

    [6] Memcache and Redis Performance Compare.http://timyang.net/data/mcdb-tt-redis/.

    [7] Memcache and Redis Functional Analysis.http://www.oschina.net/news/26691/memcached-timeout.

    展开全文
  • 内存管理的功能

    千次阅读 2013-05-05 00:32:18
    一个进程在计算机上运行,操作系统必须为其分配存储空间,使其部分或全部驻留在内存,因为CPU仅从内存中读取程序指令并执行,...分配的方式主要有三种:  (1)直接指定方式:程序员在编写程序的时候,或编译器在编

               一个进程在计算机上运行,操作系统必须为其分配存储空间,使其部分或全部驻留在内存,因为CPU仅从内存中读取程序指令并执行,不论直接从外存上读取程序。不能何种操作系统的存储管理能够实现:内存分配、地址变换、存储保护、存储共享和存储扩充。

     

    内存分配

            内存分配是为每道程序分配内存空间。分配的方式主要有三种:

           (1)直接指定方式:程序员在编写程序的时候,或编译器在编译程序的时候采用的是实际内存的地址。采用这种方式的前提是已知存储器的可用容量。

           (2)静态分配方式:用户或编译器编译的目标程序时都从0开始的编址方式。当把他们装入内存时,给他们分配存储空间,并确定他们在主存的实际位置。这种方式在一个作业装入内存时就必须分配其所要求的所有内存空间,如果没有足够的内存空间,则不能装入该进程。一旦进程装入内存,一直占用着分配给他的内存,在其运行过程中不能申请额外的内存空间。

           (3)动态分配方式:作业在内存中的位置也是在装入时确定,但是在进程执行过程中可以根据需要申请附加的内存空间。一个作业已占用的部分内存空间不需要可以归还给系统,这种方式能实现个别存储区域的动态分配和回收。

    注:内存管理还包括内存空间的回收

     

    地址变换

             地址变换是指逻辑地址到物理地址的变换,为此必须清楚这些概念:

              (1)地址空间:编译程序在对一个源程序时,总是从0号单元开始为其分配地址的,其他所有地址都是从这个地址开始地址顺序排下来的,所以地址空间中的所有地址都是相对于起始地址的,因此逻辑地址也叫相对地址。(虚的概念)

          (2)存储空间:一个数据在主存中的位置成为物理地址或绝对地址(实的概念)。一个编译好的程序存在于它自己的地址空间采用的逻辑地址空间,当装入内存运行时,转换成物理地址。

          (3)地址重定位:由于作业装入而进行的地址变换叫做地址重定位。

              任何实际程序都是由单独的模块组成,然后这些模块链接并加载到内存,这样程序才能运行。当编译器或汇编器编译一个单独的模块时,它不知道这个模块会被加载内存的何处,因此编译每个模块都是从地址0开始的。当这个模块真正装入内存时,它一般不可能是从0开始的,这样就需要一个地址转换,称之为重定位。重定位又可以分为静态重定位和动态重定位。

            (1)静态重定位:在程序被加载到内存之前已经知道了它将要加载到内存的起始地址,这样就可以事先进行地址转换,把相对地址转换成绝对地址。采用静态重定位方式,当一个程序加载到内存后,其地址固定不变。(对应于前面的静态分配方式)

          (2)动态重定位:作业装入内存后所有的地址仍是相对地址,将相对地址转换成绝对地址的过程被推迟到程序指令要真正执行时进行。动态重定位需要硬件---重定位寄存器的支持。在重定位寄存器存放程序内存的起始地址。相对地址与重定位寄存器的值相加就是程序要访问的内存地址。这样,当加载的模块要在内存移动,就只需要修改重定位寄存器的值就可以了,不需要对程序做任何改变。

    存储保护

            每个进程都应受到保护,以免被其他程序有意或无意的干扰。因此一个进程以外的其他进程中的程序未经授权不能访问该进程的内存单元。

          (1)地址保护:通常用户不能访问操作系统的部分,一个进程通常也不能访问其他进程的地址上去。

          (2)权限保护:不同的进程有不同的存取权限,如果对一个只具有执行权限的进程进行写操作,这是违法的。内存保护的需求必须由处理器来满足而不是操作系统。

     

    存储共享

                 保护机制具有一定的灵活性,允许多个进程访问主存中的同一部分。例如许多进程在执行同一个程序,则允许进程访问该程序的同一个副本一比让每个进程拥有单独的副本效率更高。内存管理系统必须允许对内存共享区域受控访问。

     

    存储扩充

                通过某种手段实现内存空间的逻辑扩充。使用户感觉好像有一个更大的内存,并不是实际扩大内存。满足如下功能:

          (1)请求调入功能:利用程序的局部性原理,把程序的一部分装入内存,使其先运行,在运行过程中如果需要访问的数据没有装入内存,可向操作系统提出申请,由操作系统从磁盘上把进程所需要的部分调入内存。

          (2)置换功能:若发现内存中已经没有空间装入需要的数据,系统应该把能将内存中暂时不用的程序和数据调出内存,存到磁盘上,以释放空间,来装入所需的进程部分。

           虚拟内存技术的雏形:交换和覆盖技术

          (1)交换技术:当内存中某些进程处于阻塞状态,但他们却占有大量的内存,甚至所有的进程都处于阻塞状态而使CPU被迫停止等待时,这时有许多作业在外存等待进入内存,造成资源浪费。引入“交换”的概念,把内存中暂时不用的程序和数据换出到外存上去,以释放内存空间,当换入到外存的数据再次使用时,把他们换入内存。进程的代码有时候在内存中是不会改变的,所以进程代码在换出的时候就不必要再次保存到硬盘,当再次装入的时候,只需要把原来的代码重新载入就可以了。为了保存内存换出的数据,操作系统会在外存上设置一个交换区。(交换区保存一些被进程修改的数据)

         (2)覆盖技术:覆盖技术是指把程序划分成若干个功能相对独立的程序段,按照自身的逻辑结构将那些不会同时执行的程序共享同一块内存区域。

    展开全文
  • Google为Chrome浏览器新增内存清除功能 很多Chrome或是Chromium用户都不会去使用任务管理器,这也确实是Google主要为开发人员提供的,不过其中的一些功能对于普通用户来说也非常有用,比如说它最近新增的内存清理...

    Google为Chrome浏览器新增内存清除功能

    很多Chrome或是Chromium用户都不会去使用任务管理器,这也确实是Google主要为开发人员提供的,不过其中的一些功能对于普通用户来说也非常有用,比如说它最近新增的内存清理功能。
    和其它浏览器一样,在功能日益强大之后Chrome浏览器对内存的占用量也十分大。Google近日在Chrome的任务管理器中添加了“Purge memory”内存清除按钮,用户只要在任务管理器窗口中使用该按钮就能快速清除内存。
    用 户需要手动添加该功能至Chrome任务管理器中,只需在命令行中添加--purge-memory-button即可,即为“C:/Users /[username]/AppData/Local/Chromium/Application/chrome.exe --purge- memory-button”。

    在使用Chrome浏览网页一段时间后,按“Shift”+“Esc”打开Chrome任务管理器后就会发现窗口下面多出了“Purge Memory”按钮,点击就可以轻松释放内存。

    展开全文
  • PHP内存缓存功能memcached

    千次阅读 2011-01-13 08:54:00
    这里简单介绍一下,memcached 是高效、快速的分布式内存对象缓存系统,主要用于加速 WEB 动态应用程序。二、memcached 安装首先是下载 memcached 了,目前最新版本是 1.1.12,直接从官方网站即可下载到 memcached-...
  • 在实际应用中内存数据库主要是配合oracle或mysql等大型关系数据库使用,关注性能,作用类似于缓存,并不注重数据完整性和数据一致性。基于键值型的内存数据库比关系型更加易于使用,性能和可扩展性更好,因此在应用...
  • 首先你要理解android的进程分级,每种级别代表不同的工作方式,和内存使用情况   前台进程(Foreground),比如ireader,ireader的程序就是前台进程,这些进程是不会被系统优先结束的.当我把它切到后台的时候,它就...
  • PHP内存缓存功能memcached

    千次阅读 2008-01-19 09:18:00
    这里简单介绍一下,memcached 是高效、快速的分布式内存对象缓存系统,主要用于加速 WEB 动态应用程序。二、memcached 安装首先是下载 memcached 了,目前最新版本是 1.1.12,直接从官方网站即可下载到 memcac
  • 操作系统的主要功能

    2021-01-09 16:52:23
     处理机管理的主要功能有:创建和撤销进程,对诸进程的运行进行协调,实现进程之间的信息交换,以及按照一定的算法把处理机分配给进程。  进程控制、进程同步、进程通信、调度。  2、存储器管理功能  存储器...
  • 用户空间内存分配主要使用标C库函数中的malloc,calloc,recalloc,valloc,alloc函数,下面来分析一下这些内存分配函数的功能与区别 (1)malloc 函数原型:void *malloc(size_t size) 函数功能:分配长度为...
  • 笔记本内存(口头上又被成为内存条)的主要作用:是用来存放计算机系统执行时所需要的数据,存放各种输入,输出数据和中间计算结果,以及与外部存储器交换信息时作为缓冲用,实际上是计算机本身数据暂时存储的一个数据...
  • 说到Cisco路由器实际上只不过是运行自定义操作系统的专用计算机。 在这种情况下,它是一台优化的计算机,用于提供路由和...Cisco路由器中有四个主要内存区域,熟悉它们很重要,即Flash,RAM,ROM和NVRAM。1、Flash ...
  • 操作系统的重要功能——内存管理

    千次阅读 2020-07-03 19:54:14
    内存是计算机中一种需要认真管理的重要资源。正如帕金森定律所述:"不管存储器有多大,程序都可以把它填满"。因此,我们需要针对内存进行单独管理,比避免这种现象...本文将主要介绍在操作系统中,如何对内存进行管理。
  • 对于购物车其主要功能就是保存用户之前选取的商品以及其对应的购买数量等信息,在用户再次登录或进入网页时可以再次查询到并展示出之前所添加的商品的相关信息,为用户提供一个更加流畅的购物体验,因此这是在许多...
  • zone_wartermark_ok()主要用来判断当前zone的free pages个数是否大于参数的watermark的值,且当前zone存在连续的内存块满足内存分配时的2^order个页数,order为函数参数指定。 balance_pgdat():函数会先通过zone_...
  • Cortex-A15 MPCore 主要功能 Thumb-2 技术 可为传统 ARM 代码提供最高性能,对于存储指令占用的内存,最多...
  • 被聚集在一起,提供内存管理的功能 如上图所示,heap中直接有13个跟space有关的引用。其中前三个是一个Vector集合,内部包含更多的space,这里面就是对象的生成位置 二、Heap分配对象的主要方法 1、...
  • DOS的主要功能和构成

    千次阅读 2013-11-19 15:32:49
    DOS的主要功能和构成 ... ...1.主要功能:文件管理、内存管理、设备管理、作业管理和CPU管理。 2.构成:DOS的构成主要有三个层次。 最高层 也即与用户的接口是一组用户键入命令的解释程序。程
  • 简介SQL SERVER 2014主要功能

    万次阅读 2014-03-31 23:56:34
    Microsoft SQL Server 2014已经内置最新... Microsoft SQL Server 2014为市场带来了部署到核心数据库中的新内存功能,包括内存 OLTP,它是对市场上大多数综合内存数据库解决方案的现有内存数据仓库和 BI 功能的补充。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,479
精华内容 4,991
关键字:

内存主要功能