[問題] VistualVM能否找出哪一個method吃掉記憶

看板java作者 (Commodore)時間7年前 (2017/06/21 18:25), 編輯推噓4(4019)
留言23則, 9人參與, 最新討論串1/1
目前系統執行大量資料進行測試時 跑到一半便會出現out of memory的問題 之前試過使用Vistual JVM去找出最花時間的method是哪個 來降低執行速度太慢的問題, 現在遇到另一個記憶體空間不足的問題, 但似乎Vistual JVM沒有辦法顯示是哪一個method一直在爆量增加記憶體, 還是找吃掉記憶體元凶通常不是這樣看呢? 或者是要用其他工具才有辦法看到更詳細的分析結果呢? 麻煩大家 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.110.208 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1498040703.A.1EF.html

06/21 19:44, , 1F
花錢請人找問題吧, 想學一下就會, 很多人早升天了.
06/21 19:44, 1F

06/21 21:07, , 2F
Heap dump?
06/21 21:07, 2F

06/21 21:50, , 3F
heap dump不會告訴你哪個METHOD吃RESOURCE的.
06/21 21:50, 3F

06/22 01:26, , 4F
VisualVM -> Profiler -> Settings -> Memory settings ->
06/22 01:26, 4F

06/22 01:27, , 5F
Record allocations stack traces -> start profiling ->
06/22 01:27, 5F

06/22 01:28, , 6F
Take Snapshot -> 右鍵 -> Show Alloc. Stack Traces
06/22 01:28, 6F

06/22 09:53, , 7F
failed to obtain results snapshot
06/22 09:53, 7F

06/22 09:53, , 8F
the profiled application terminated
06/22 09:53, 8F

06/22 23:11, , 9F
程式可能重寫比你這麼找半天來得快囉.
06/22 23:11, 9F

06/24 14:11, , 10F
是可以看哪個物件吃了最多記憶體
06/24 14:11, 10F

06/24 14:11, , 11F
找method除非是程式在寫的時候就有寫監視功能進去
06/24 14:11, 11F

06/24 14:12, , 12F
不然沒辦法知道是哪個METHOD
06/24 14:12, 12F

06/24 18:06, , 13F
jrockit?
06/24 18:06, 13F

06/24 18:13, , 14F
一堆沒做過的人,提了一堆工具,認為就可以有答案了.
06/24 18:13, 14F

06/25 10:56, , 15F
沒這麼簡單阿~~
06/25 10:56, 15F

06/27 22:52, , 16F
我說的是用jstat
06/27 22:52, 16F

06/27 22:52, , 17F
但是有沒有符合原PO的需求就不曉得了
06/27 22:52, 17F

06/27 22:53, , 18F
jstat可以看到哪個物件生成數最多 占多少記憶體
06/27 22:53, 18F

06/27 22:53, , 19F
應該是說變數啦
06/27 22:53, 19F

06/28 19:01, , 20F
code review + 逐漸縮小範圍測試
06/28 19:01, 20F

06/28 19:03, , 21F
你運氣算好的 可以透過測試重現OOM問題
06/28 19:03, 21F

06/28 19:46, , 22F
能歸在method吃掉的記憶體只有local variable吧
06/28 19:46, 22F

06/28 19:48, , 23F
其他的物件就在heap上啊
06/28 19:48, 23F
文章代碼(AID): #1PIab_7l (java)
文章代碼(AID): #1PIab_7l (java)