我的应用程序占用了大量的内存,jrocket jrcmd告诉我它有一个巨大的"其他"记忆部分。谁能给我一些关于它是什么的想法?
从https://community.oracle.com/thread/3514021下面的链接,它似乎与JVM本身有关。我可以调整一些JVM选项以降低此值吗?
/usr/java/jrockit-jdk1.6.0_45-R28.2.7-4.1.0/bin>./jrcmd 27074 print_memusage displaymap
27074:
Total mapped 8701648KB (reserved=1563316KB)
- Java heap 1048576KB (reserved=0KB)
- GC tables 35084KB
- Thread stacks 521140KB (#threads=226)
- Compiled code 1048576KB (used=6802KB)
- Internal 1672KB
- OS 745728KB
- Other 5236872KB
- Classblocks 3840KB (malloced=0KB #0)
- Java class data 59136KB (malloced=0KB #0 in 11063 classes)
- Native memory tracking 1024KB (malloced=512KB #8)
答案 0 :(得分:0)
我会看
less /proc/27074/maps
分解每个内存映射。从这里你可以找出这个额外记忆的去向。如果JVM不知道它是什么,它更有可能成为您使用的本机库。
另外我会考虑将您的Java版本升级到版本8更新60.如果这是一个JVM错误,您可能会看到这是否已修复(您可能无法升级生产但是这样可能会告诉你一些关于内存使用的地方)