我想根据可用内存分配我的缓冲区。这样,当我进行处理时,内存使用率上升,但仍处于可用内存限制中。有没有办法获得可用内存(我不知道虚拟或物理内存状态会有所不同吗?)。方法必须是平台独立的,因为它将在 Windows、OS X、Linux 和 AIX 上使用。 (如果可能的话,我还想为我的应用程序分配一些可用内存,在执行期间它不会改变)。
编辑:我用可配置的内存分配做到了。我知道这不是一个好主意,因为大多数操作系统为我们管理内存,但我的应用程序是一个 ETL 框架(打算在服务器上使用,但也作为 Adobe indesign 的插件在桌面上使用)。所以,我遇到了问题,因为 Windows 不使用交换,而是返回错误的分配,其他应用程序开始失败。正如我被教导要避免崩溃等等,我只是试图优雅地降级。
原文由 theCakeCoder 发布,翻译遵循 CC BY-SA 4.0 许可协议
通读这些答案后,我很惊讶有这么多人认为 OP 的计算机内存属于其他人。这是 他的 电脑和 他 认为合适的记忆,即使它破坏了其他系统的要求。这是一个有趣的问题。在一个更原始的系统上,我有
memavail()
这会告诉我这一点。为什么 OP 不应该在不扰乱其他系统的情况下占用尽可能多的内存?这是一个分配不到一半可用内存的解决方案,只是为了善良。输出是:
需要 FFFFFFFF
需要 7FFFFFFF
需要 3FFFFFFF
分配的内存大小 = 1FFFFFFF