在配备 Core i5(双核)和 4GB RAM 的 32 位 WinXP 中,我尝试使用 7-Zip(GUI)在“超级”压缩级别(方法:LZMA2、字典大小:48MB、字大小:64、CPU 线程:4/4)下从 266MB 日志文件创建 .xz 存档,计算的压缩内存为:1680MB,解压缩内存为:50MB。
这不管用,因为无论实际内存使用情况如何,我总是会收到一条错误消息,提示“系统无法分配所需的内存量”。7-Zip FAQ 提到分配的虚拟空间限制为 2GB,但给定的“用于压缩的内存”远低于该限制。
有人知道发生了什么事吗?
答案1
32 位进程(在 32 位 Windows 上)有 2GB 地址空间。但是:该空间将支离破碎!其中有代码、一些 DLL 和您的数据(以及……),它们之间都存在较大的间隙。
如果 1680 MB 需要单身的阻止,不太可能有这么多地址空间free:分配失败。如果请求的单个块大于 1 GB,则经常会发生这种情况。换句话说:您无法分配一个 1GB 的块,但可以分配一个 700 MB 的块和一个 300 MB 的块。
sysinternals 套件中有一个“vmmap”工具,您可以使用它来显示进程的地址布局,包括可用空间。
答案2
正如其他答案中提到的,32 位无法寻址超过 2GB 的内存块(理论上),因此您需要使用 64 位版本的 7-Zip。您可以从这里