为什么我的应用程序在使用UPX压缩后会占用更多内存,我该怎么办呢?

时间:2012-02-09 21:42:30

标签: delphi upx

我正在使用UPX压缩器压缩用Delphi XE编写的应用程序。文件大小从大约32 Mb到8 Mb。

但我注意到的一件奇怪的事情是,在运行压缩文件时RAM的占用率会显着增加。从25/30 Mb到大约80 Mb。这是正常的还是你应该保留的问题?就我而言,由于应用程序在具有多个用户的Windows Server 2008远程桌面模式下运行,因此系统的重量不成比例。

为什么会这样?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:20)

这就是EXE压缩机的工作原理。它们压缩磁盘文件,而不是可执行代码。要使压缩文件再次可执行,需要将其解压缩,并将未压缩的数据存储在内存中。使用普通的非压缩EXE文件,操作系统将仅加载此刻所需的文件部分。其余的可以留在磁盘上。由于您的整个未压缩应用程序都在内存中,这就是您的内存使用量显得更高的原因。

此外,磁盘文件可以由多个用户共享,而包含未压缩可执行文件的内存不会共享。运行程序的每个用户都有一个单独的未压缩程序副本。

通过压缩程序节省的26 MB磁盘空间实际上是共享远程桌面服务器上的 nothing 。不要压缩文件。如果要在分发期间压缩文件以节省带宽,则将程序打包在安装时解压缩文件的安装程序中,而不是每次运行时都需要解压缩文件的EXE压缩程序。