我正在处理一个C++应用程序(大学的OpenSSL作业),我正在运行它,就像一个应用程序一样。当程序由于输入无效而失败时,我注意到了一些非常奇怪的输出:
==1739== HEAP SUMMARY:
==1739== in use at exit: 588 bytes in 6 blocks
==1739== total heap usage: 52 allocs, 46 frees, 99,206 bytes allocated
==1739==
==1739== 44 bytes in 1 blocks are possibly lost in loss record 3 o
我将回答我自己的问题,为下一个点击这个问题的人提供面包屑:
问题
x86Linux Maven构建在flexmojos插件期间失败
load-config+=...flex-config.xml -static-link-runtime-shared-libraries...
-metadata.language+=en_US
[INFO] Loading configuration file .../flex-config.xml
# There is insufficient memory for the Java Runtime Environment to continue.
#
64位寻址的地址空间绝对是巨大的。我有一个程序,将mmap几块内存,每个100 -500MB的顺序。我将不可避免地重新映射几次,这可能会导致可用连续空间的一些碎片。
无论发生什么空间碎片,考虑到可用的地址空间,它肯定会非常小。
我的问题是:考虑到这些限制,在正常情况下,我能期望所有mmap请求都成功(即不会因为碎片而失败)吗?他们失败的原因可能是什么?
我知道堆本身并不拥有整个空间,但我认为它拥有绝大多数空间。
Mac OS / Linux。