全部,
我有一个 Java 内存进程,它随着时间的推移开始占用越来越多的内存。为了设置堆空间使用上限,我将 -Xmx 选项设置为 512M。慢慢地过了一段时间Process内存使用量达到了2GB。
我已经使用 MAT 和 YOURKIT 等各种工具分析了代码中可能存在的内存泄漏,并发现 Java 代码中没有这种可能的泄漏。该代码还使用了一个看起来无泄漏的本机函数。
我有以下问题:
- 是否有可能对 Java 进程可以使用的总内存设置上限?
- 除了 Heap 之外,JVM 的其他内存使用是什么?
- Linux 是否在 Windows 的“工作集”内存模型上工作,其中一个进程在进入后台时会释放它的内存。
- 即使在使用带有 512M 的 -Xmx 选项后,如果堆使用量增加,JVM 也不应该抛出“内存不足”。这让我怀疑除了堆空间之外的其他东西正在泄漏内存。从内存转储看来,堆内存没有增加。
感谢你的回答。