參考:http://blog.csdn.net/chenleixing/article/details/44227327/
1. 在IE地址欄中輸入:http://localhost/test/init1.jsp,執行一次,我們可以在內存視圖中看到cn.test.TestBean對象被創建了10000次:
2.標記現在的狀態,然后再執行init1.jsp和,init2.jsp可以讓我們找到哪些類在調用后沒有被釋放(很重要!!!)
查看哪些類被發生了變化:
紅色的變成是發生變化的對象及其數量。
我剛才執行了4次init1.jsp和1次init2.jsp,正好產生了50000個TestBean對象,和圖示顯示的一樣。
3. 過一會后,按F4鍵進行垃圾回收。但回收完成后,這些對象依然存在,說明某些地方對這個類的引用沒有被釋放!
4. 找出是哪些地方使用了TestBean類,並且沒有釋放它們
在cn.test.TestBean對象上點擊右鍵選擇“Take Heap Snapshot for Selection”,觀察它的heap
下一步:
點擊“OK”:
在該類中點擊右鍵,在出現的菜單中選擇“Use Selected Objects”:
出現如下窗口:
選擇”Allocations”,點擊“OK”,然后我們要的結果就出來了
圖中顯示調用此類的地方是init1.jsp和init2.jsp,並且各自占用的比率都列出來了。
既然問題的所在找出來了,接下來就該去解決問題了!