5

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

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

为什么会这样?我怎么解决这个问题?

4

1 回答 1

22

这就是 EXE 压缩器的工作方式。他们压缩磁盘文件,而不是可执行代码。要使压缩文件再次可执行,需要对其进行解压缩,并将未压缩的数据存储在内存中。对于普通的、未压缩的 EXE 文件,操作系统将仅加载当前需要的文件部分。其余的可以保留在磁盘上。由于您的整个未压缩应用程序都在内存中,这就是您的内存使用率看起来更高的原因。

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

通过压缩程序节省的 26 MB 磁盘空间在共享远程桌面服务器上几乎没有。不要费心压缩文件。如果您想在分发期间压缩文件以节省带宽,请将您的程序打包在安装程序中,该安装程序在安装时解压缩文件一次,而不是每次运行时都需要解压缩文件的 EXE 压缩器。

于 2012-02-09T22:17:35.910 回答