2010-09-09 43 views
0

昨天我讀了一些關於應用程序優化的內容,以及程序員應該如何找到程序中最常用的部分,以及通過分析和修改它們獲得最大收益(在考慮投入的時間/工作量與內存/速度增益時)。現在,我運行了Eclipse分析器,得到了VisualVM,但我不知道如何正確使用這些數據。我主要關心的是內存使用情況(我生成一個XML並將其作爲zip存儲到磁盤或將其作爲zip壓縮到用戶下載),並從數據庫中減速(我懷疑我的索引不存在或不好,在任​​何情況下,都不瞭解他們,所以我不能告訴你更多:)但我甚至不知道如何開始這個。對於第一種情況,VisalVM顯示該程序使用高達200MB,但是當我檢查堆轉儲並單擊最常用的對象(或其調用方式)時,該信息勢不可擋。對於第二種情況,我知道更少,除了蟾蜍有一些工具。我應該如何開始分析/優化我的java應用程序/ oracle數據庫?

我想知道的是如何開始這樣做,當我對本地性能感到滿意時,如何在生產應用程序上做到這一點。編輯1:所以,對於內存使用的一個具體例子(我生成一個XML並將其作爲zip存儲到磁盤或將其作爲zip壓縮到用戶下載)。這是我所得到的,當我選擇「堆轉儲」,然後選擇前20名對象被保留尺寸和打開細節:Heapdump screenshot

,這是我所得到的,當我在相同的使用情況下打開探查:

alt text

問題是,這個屏幕告訴我什麼? :)

+0

在Visual VM中,您可以深入瞭解代碼的哪一部分佔用了大部分內存。這就是你需要放大的地方。也可能是你有一個特定對象的大量實例,這可能表示內存泄漏。那些通常是你想要尋找的東西。你也可以看看Jamon(http://jamonapi.sourceforge.net/),這對於系統監控非常有用,如系統 – Albert 2010-09-09 07:53:58

+0

你寫道:「我懷疑我的索引不存在或不好,在任何情況下,都不瞭解他們,所以我不能告訴你更多:)「這是我的網絡書籍」使用索引,盧克「(http:// use-the-index-luke)。 com)是關於。總的來說,你應該首先確定一個目標。現在有多快,你想要多快? – 2010-09-09 09:43:08

+0

@Albert我假設的那部分,但是具體的例子是什麼意思?我將編輯我的原始答案以獲取詳細信息。 – Andrija 2010-09-09 11:51:41

回答

相關問題