我們試過jdk 1.7.0_02。十天運行給420 MB以下對象的內存泄漏:
- java.lang.management.MemoryUsage,
- [C(字符數組),
- $的java.util.HashMap入境,
- [Ljava.util.HashMap $ Entry(HashMap $ Entry的數組),
等等。jdk1.7.0中的內存泄露
這不會發生在jdk1.6.x上。
的第一輸出 「JMAP -histo:活」 命令:
num #instances #bytes class name
----------------------------------------------
1: 229527 14926888 [C
2: 289290 13885920 java.lang.management.MemoryUsage
3:29 10272928 java.util.HashMap$Entry
4: 69923 10262184 <constMethodKlass>
5: 69923 9527672 <methodKlass>
6: 7048 7787040 <constantPoolKlass>
7: 241693 7734176 java.lang.String
8: 2038 5898408 [Ljava.util.concurrent.ConcurrentHashMap$HashEntry;
9: 7048 5479056 <instanceKlassKlass>
10: 5954 4499552 <constantPoolCacheKlass>
11: 67844 4091672 [Ljava.util.HashMap$Entry;
12: 41250 3942848 [B
13: 65649 3151152 java.util.HashMap
14: 71891 2875640 java.util.TreeMap$Entry
...
Total 2320965 138000120
中的最後輸出 「JMAP -histo:住」 命令在10天內完成後的第一次:
num #instances #bytes class name
----------------------------------------------
1: 3147110 151061280 java.lang.management.MemoryUsage
2: 3178875 101724000 java.util.HashMap$Entry
3: 1087332 53822632 [C
4: 1099503 35184096 java.lang.String
5: 639442 31529224 [Ljava.util.HashMap$Entry;
6: 637247 30587856 java.util.HashMap
7: 629422 25176880 [Ljava.lang.management.MemoryUsage;
8: 314711 17623816 com.sun.management.GcInfo
9: 70107 10292776 <constMethodKlass>
10: 631864 10109824 java.util.HashMap$EntrySet
11: 314711 10070752 sun.management.GcInfoCompositeData
12: 70107 9552696 <methodKlass>
13: 7075 7817080 <constantPoolKlass>
14: 314713 7554128 [Ljava.lang.Integer;
15: 2048 5898744 [Ljava.util.concurrent.ConcurrentHashMap$HashEntry;
16: 7075 5497200 <instanceKlassKlass>
17: 315792 5052672 java.lang.Integer
18: 47680 4912352 [B
...
Total 13206419 558217856
我還有8個其他的直方圖,測試後的每一天做出。它們顯示線性物體的數量在增加。這絕對不是一個噪音。這是一個穩定的泄漏每天42 MB。
您是否觀察過類似的行爲?在什麼情況下?你是怎麼應付的?
你的問題是什麼? – tobiasbayer 2011-12-19 08:47:20
-1沒問題;如果這是一個錯誤報告:請聯繫Oracle。 – 2011-12-19 08:59:00
@CodeBrickie,問題是 - 你有沒有觀察到類似的行爲?在哪些場景中?你是怎麼應付的? – Neighbour 2011-12-19 13:18:56