2015-09-04 53 views
1

我的應用程序吃了大塊內存,jrocket jrcmd顯示它有一個巨大的「其他」內存部分。任何人都可以給我一些關於它是什麼的想法嗎?JRocket JVM 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

我想看看

less /proc/27074/maps 

拿到一個破發每個內存映射下來。由此你可能能夠計算出這個額外內存的去向。如果JVM不知道它是什麼,那麼更有可能成爲您正在使用的本地庫。

另外我會考慮將您的Java版本升級到版本8更新60.如果這是一個JVM錯誤,您可能會看到這是否已被修復(您可能無法升級生產但這可能會告訴你一些關於內存使用的地方)