我建立了一个共享库,以通过Java
从jni
代码访问Linux特定的系统调用,并且遇到RSS不断增加的麻烦。
有没有办法检查本机内存?我试图用gdb进行核心转储:
gdb --pid=6385
gdb> gcore
但是它变成了400GB RSS的9GB。也许还有其他更简单的方法或工具来解决该问题?
我正在使用Linux Ubuntu 18.04
答案 0 :(得分:1)
如果应用程序尝试访问它不拥有的内存,则C标准允许实现执行他们认为合适的任何事情。一些专为低级编程而设计的实现可以有效地保证,尝试通过它们“不了解”的指针访问存储的尝试将“以环境的书面形式记录”(通常将它们视为访问底层硬件的请求)一些旨在处理对安全敏感的应用程序的实现可能会通过主动阻止它们并“终止转换或执行(带有诊断消息)”来有效地阻止尝试访问未拥有的存储。情况。
该标准的作者认识到实现用于多种目的,并且适合于某些任务的处理方法不适用于其他任务。根据已发布的基本原理,标准应将哪种实施方式用于处理动作的问题视为“未定义行为”,这是“实施质量”问题,由“市场”决定应如何预期用于各种目的的质量实施表现。