内存整理软件的原理是什么?

解决方案 »

  1.   

    在操作系统中,内存的概念被抽象了很多。在内存管理上,分为物理内存和虚拟内存,
    而且每个进程都有自己可管理的内存区域。而内存地址也有锁定和解锁的说法,所以
    有些内存地址也是不可触碰的,当然,也要看程序的运行权限如何,比如应用程序,通
    常也就管理一些应用程序间的内存,不可能触碰到系统内存,因为应用程序是作用于CPU
    的 Ring 3 层,而系统内核与驱动类程序作用与 CPU 的 Ring 0 层,指令集不同,自
    然安全与权限都不同,但也并不是没有办法去管理这些内存,只是这些就不是普通应用
    程序做的事了。
    通常的内存优化程序,也就是管理一些普通应用程序进程的内存。主要的工作就是释放物理
    内存,将不常用的物理内存放到虚拟内存中。这种过程就有点像线程注入的方式,主要是
    枚举出进程句柄,然后通过查找进程的几个基本函数地址,得到函数指针,然后让目标程序
    自己加载函数和调用函数来处理自己的内存(线程注入就是让目标进程加载自己的函数地址
    而已,这里是调用一些管理自己内存的函数)。
      

  2.   

    搜一搜传统的内存整理软件工作原理大概是:先申请一块“巨大内存”。因为物理内存几乎全被内存整理软件占用,因此Windows被迫把其他软件的内存数据转移到硬盘上的“虚拟内存交换文件”(PageFile)中,完成这一过程之后内存整理软件就会释放掉刚刚申请的内存,至此整理过程完成,可用物理内存显著增加。有人给这个过程起了个好听的名字:“内存碎片整理技术”。 表面上看起来上一切都非常棒,但实际却并非如此,因为几乎所有程序的“内存数据”甚至“程序自身”都被转移到了硬盘的“虚拟内存交换文件”,当程序用到这些数据的时候就必须从硬盘读取。 硬盘数据读取速度很少有超过100M/S的,内存的读取速度要比硬盘快60,普遍能达到2G/S(1G=1024M)。由此看来传统的内存整理不但没有加快速度,反而会降低系统的速度。单纯的增加可用物理内存又有什么意义呢?
      

  3.   

    http://topic.csdn.net/t/20061103/09/5130031.html