gpt4 book ai didi

java - Linux 中的 native 内存使用率似乎比通过 JVM 本身(例如通过 JConsole)观察到的要高得多

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:24 24 4
gpt4 key购买 nike

我们有一个客户在装有 IBM JVM 1.6 的 RedHat Linux Server 5.6 (Tikanga) 上使用 WebSphere 7.0。当我们查看操作系统的内存使用报告时,我们看到非常高的数字,并且由于内存不足,操作系统在某个时候开始使用 SWAP 内存。另一方面,JConsole 图表显示了完全正常的内存行为 - 堆大小会增加,直到 GC 在预期时被调用,而堆大小在正常周期中下降到约 30%。非堆符合预期并且大小非常恒定。

有谁知道这种额外的 native 内存使用量可以归因于什么?

最佳答案

我会检查你正在查看常驻内存而不是虚拟内存(后者可能非常高)

如果交换,即使是轻微的交换也会导致 JVM 在 GC 上暂停很长时间。如果您的应用程序没有锁定几秒钟或几分钟,它可能没有交换(另一个程序可能是)

如果您的程序确实在使用 native 内存,这很可能是由于您导入了 native 库。如果您查看/proc/{id}/mmap,这可能会为您提供线索,但更有可能必须检查您正在加载哪些 native 库。


注意:如果您有很多线程,所有这些读取的堆栈空间可能会加起来。如果可以的话,我会尽量将它们保持在最低限度,但我已经看到有数千个 JVM,这会消耗 native 内存。 GUI 组件也可以使用 native 内存,但我假设您没有这些。

关于java - Linux 中的 native 内存使用率似乎比通过 JVM 本身(例如通过 JConsole)观察到的要高得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15460408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com