改程序释放什么意思

改程序释放什么意思,第1张

删除没有用的程序。

提示释放的其实就是内存不足了,要清理一下内存,或者清理一下程序运行缓存。

小程序可能无所谓,如果占用内存大的程序,只申请内存空间而不释放的话,就会造成内存不够用。

一个很小的程序也可能占用CPU100%,但不会占用内存100%,内存占用100%再打开其他程序就会占用虚拟内存,虚拟内存是硬盘上的一部分,速度很慢。

占用内存多少是由程序本身决定的,不是内存占用的越多程序运行约快,内存只是作为存储器,负责运算的还是CPU,比如1+1计算1000亿次,3GHz的CPU可能需要计算两分钟,但是占用的内存和运算一次500亿+500亿是一样的,而两个500亿相加瞬时就能完成。

程序只是暂时使用内存,关闭后会释放内存。

压缩1GB的文件,并不需要把整个全部加载到内存再压缩。

假如把文件全部加载到内存。

从硬盘读取全部1G数据到内存用1分钟,压缩过程需要CPU运算10秒,压缩后的文件是800M,把800M写入硬盘用50秒,整体需要1分50秒,占用内存1.8G。

而加载100M压缩,完成后写入硬盘,然后释放内存,再加载100M压缩,完成后写入硬盘,再释放内存,这样压缩完1G需要的时间大约也是1分50秒(时间主要花费在读写数据的情况),占用内存180M。

如果压缩过程需要CPU运算5分钟,全部读取后压缩再写入完成的时间是6分钟(压缩同时进行写入),而依次读取100M同时压缩再写入的时间是5分钟多一点,运算完成的同时读写数据已经完成了(时间主要花费在运算的情况)。

这只是一个比喻,实际过程比这个复杂,但原理相同,编程的人怎么写计算机就怎么工作。

这样就说明内存占用和程序运行速度之间的关系。

越好的程序,运行速度越快,占用内存越小。

想占用内存就多开几个程序,比如Photoshop打开50个1000万像素的照片,内存就占满了。

如果内存站的越多程序运行越快,那要CPU做什么。

 写出一个不会造成资源分配崩溃的Delphi应用程序的关键是确保如果程序中分配了资源 即使当故障发生 程序也应能释放占用的资源

文件 内存 WINDOWS资源和对象是一些必须时时加以注意的需确保释放的资源 下面的事件控制代码例子中先分配了内存 然后产生了一个错误 而造成它不再执行释放内存的程序代码

ProcedureTForm .ButtonlClick(Sender Tobject)

Var

Pointer Pointer

Integer Numzero Intger

begin

Numzero Κ

GetMem(Pointer ) {分配 K的内存资源}

Integer Κ divNumzero {此句产生一个除法错误}

FreeMem(Pointer ) {这里此句将不被执行}

end

尽管大多数错误不会这样明显 但上例包含了重要的一点 当错误产生后 程序执行跳出模块 其后的资源释放程序代码不再被执行 为了确保上例中的FreeMem能够释放被GetMem占用的内存资源 必须把代码放入一个资源保护模块

这里给出一个曲型的资源保护模块的格式

{资源的分配}

try

{资源的使用}

finally

{资源的释放}

end

上面的try...finally模块可以使程序总能执行finally部分中的任何程序代码 即使有错误在保护模块中产生 当try部分中的某一条代码执行引起错误时 执行将直接跳到finally部分 若执行中没有错误产生 则程序按正常顺序执行

在下面的事件控制代码例子中先分配了内存 然后产生了一个错误 但是仍然执行了释放内存的程序代码

ProcedureTForm .Button Click(Sender Tobject)

Var

Pointer Pointer

Integer Numzero Integer

begin

Numzero Κ

GetMem(Pointer ) {分配 K的内存资源}

try

Integer Κ divNumzero {此句产生一个除法错误}

finally

FreeMem(Pointer ) {这里此句仍将被执行}

end

end

lishixinzhi/Article/program/Delphi/201311/25084


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11461820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存