繁体   English   中英

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

[英]Native memory usage in Linux seems to be much higher than observed through JVM itself (e.g. through JConsole)

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

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

我会检查您正在查看驻留内存,而不是虚拟内存(后者可能很高)

如果交换,即使稍微交换,这也可能导致JVM在GC上停顿很长时间。 如果您的应用程序没有锁定第二或几分钟,则可能是没有交换(可能是另一个程序)

如果您的程序确实在使用本机内存,则最可能是由于您导入了本机库。 如果您查看/ proc / {id} / mmap,这可能会给您一个线索,但更有可能必须检查您正在加载的本机库。


注意:如果您有很多线程,则所有这些读取的堆栈空间可能会累加。 如果可以的话,我会尽量减少这些,但是我看到JVM有成千上万个,这会占用本机内存。 GUI组件也可以使用本机内存,但我假设您没有任何这些。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM