[英]Interpreting the results of a VisualVM profiling session
我有一個應用程序,使用Mac OS X上的此 jdbc驅動程序將一些數據(約8萬個元組中的15mb數據)寫入SQLite數據庫。這是使用事務完成的,其中事務最大,其中一個表包含約4.5萬個插入。 對應用程序進行性能分析時,似乎有些奇怪:
System.in.read()
暫停應用程序,則進程分配的內存將保持緩慢增長。 這是為什么? 謝謝你的幫助。
內存使用中的拼圖模式是由於分析結果是通過RMI傳輸的。 從程序的實際內存分配中過濾出來確實是非常令人困惑和煩人的。 請參閱VisualVM分析是否污染了結果,以了解如何過濾這些結果:-)
關於您的第一個問題,您觀察了多長時間的緩慢增長。 當Java進程中的內存使用量處於靜止狀態時,通常會看到鋸齒狀模式的發展。 您是否看到同一時間段內發生任何GC? 如果沒有,那就是更多的證據支持了這個想法。
對於第二個問題,如果沒有更多信息,很難確定。 通常,您希望打開性能分析時,應用程序的行為會有所不同,因為計時窗口會發生變化,應用程序必須花時間報告數據並完成其正常工作,等等。可能是,如果打開性能分析,則會發生更多的內存分配,因為您的代碼現已檢測到,這會觸發GC,從而降低堆使用率。 禁用概要分析后,請嘗試在應用程序中執行System.gc()並告訴我們您的堆使用情況報告什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.