0

我努力将现有的 x64 软件制作成 x86 版本。

在x64下大概需要6G~10G内存,但是在运行x86版本的时候大概需要1.5G内存就崩溃了。

我想知道是否有一种简单的方法可以让缓存文件/临时文件在没有太多代码更改的情况下进行一些内存<->硬盘交换?

谢谢

4

1 回答 1

0

如果它崩溃了,你有一个错误(或几个)要修复。

您是否可以使您的代码在最大 2-3G RAM 的 32 位模式下工作在很大程度上取决于代码。而且您可能更有能力回答这个问题,因为您已经获得了代码,而且我们对它应该做什么以及它是如何工作的一无所知。

一些想法:

  1. 修复内存泄漏
  2. 修复内存碎片
  3. 以更小和/或更少的块处理数据
  4. 将处理重新排序为独立的阶段,每个阶段使用较少的内存
  5. 尽可能在各个处理阶段之间共享内存(想想 C/C++ union),尽量减少未使用的空间和不必要的数据副本
  6. 使用更智能的算法,需要更少的内存
  7. 压缩和解压缩数据,可能在运行中
  8. 将整个程序分成几个,以利用比 4G 更大的累积地址空间和更多的物理内存PAE
  9. new如果它是 C++,您可以尝试通过重载/delete[]/ */->并在后台管理磁盘 I/O 的内存来“扩展”虚拟地址空间和可用内存量。您可以使用内存映射文件或普通文件。这可能会变得丑陋且难以正确快速地完成。
  10. 找到或实施一个虚拟化解决方案,该解决方案可以在 32 位操作系统中运行您的 64 位应用程序,或者在 32 位操作系统VM之上或与您的 32 位操作系统并行运行的 64 位应用程序中运行。不过,您可能不喜欢速度或障碍。
  11. ...

祝你好运!

于 2013-01-21T05:02:51.820 回答