回答
您可以使用jconsole.exe,它可以在您的jdk的bin目錄中找到。它向您展示了有關正在運行的JVM的大量細節。
1爲JConsole的。您會看到內存使用情況的鋸齒圖,顯示GC何時啓動。如果您願意,您甚至可以觸發手動GC。我懷疑你會發現這雖然是GC。 – 2009-07-16 06:05:17
當您使用-XX啓動Java:+ PrintGC,它將每當垃圾收集打印的消息。
和-XX:+打印GCDetails – 2009-07-16 08:17:01
GC很可能導致可觀察到的問題。 Java曾經有一個非常緩慢的GC,給它一個近乎永久的壞名聲。那個時間已經過去了。
慢的究竟是什麼? GC應該不會超過幾分之一秒,即使是罕見的全面收集通行證。
編輯:即使GC 是運行的可測量的量,很可能只是問題的徵兆。無論代碼如何對GC提出這麼多要求,內部會導致比GC更慢的速度。
這隻適用於小應用程序,這可能就是這種情況。一旦擴大內存使用量,GC就很容易成爲問題。在大多數情況下,它關於單個GC所花時間的垃圾收集數量。 – jens 2009-07-16 06:07:11
如果小,你的意思是少於*一個或兩個*,那麼也許? – 2009-07-16 06:12:45
我非常懷疑這是你看到的GC。正如280Z28指出的那樣,GC通常運行速度非常快(儘管如果你做錯了某些事情仍然會導致性能下降)。你那時正在使用該程序嗎?如果沒有,也許你的記憶力有點低下,它會被分頁出去? (讓Eclipse運行時間超過半天而不使用它會導致一個狀態,我不能再使用它了。在內存很小的系統上它可能會更快發生)。
如果使用JDK最近是jvisualvm允許您連接到正在運行的進程,以研究這種最簡單的方法。然後您可以看到垃圾回收,內存使用情況和配置文件(如果需要) (它基本上是相應的NetBeans功能,可作爲JDK中的獨立應用程序使用)。
它補充和增強jconsole!
(但你的描述可能是由程序中的內存泄漏過多GC的。使用jvisualvm搞清楚)
GC本身可能是沒有問題的。但是,如果您有內存泄漏,則可能會導致GC使用嘗試清除內存的所有CPU。
因爲每個人都有前面所提到的,GC幾乎是肯定沒有問題。
我會嘗試像YJP(你的Java剖析,免費爲30天)來分析你的應用程序,並找出明顯放緩。內存泄漏是一個非常可能的原因。
- 1. Android - 檢測垃圾收集
- 2. 我可以檢測到在.NET中運行垃圾收集的時刻嗎?
- 3. 垃圾收集器如何檢測垃圾?
- 4. Java垃圾收集時間?
- 5. 垃圾收集YGCT和垃圾收集時間不斷上升
- 6. 垃圾收集器
- 7. 這會收集垃圾嗎?
- 8. 我們可以用C或C++手動操作垃圾收集器嗎?
- 9. 垃圾收集的工作環境?
- 10. 垃圾收集器只需要在堆中工作嗎?
- 11. Node.js的垃圾收集器
- 12. C++有垃圾收集器嗎?
- 13. C有垃圾收集器像Java嗎?
- 14. 我如何停止Android垃圾收集器?可能嗎?
- 15. 垃圾收集器的可視化
- 16. 垃圾收集
- 17. JavaScript - 垃圾收集器計時器?
- 18. Redux垃圾收集如何工作?
- 19. 垃圾收集機制如何工作?
- 20. 背景工作者和垃圾收集?
- 21. 減少垃圾收集時間
- 22. Renderscript和垃圾收集器
- 23. 垃圾收集器閃存
- 24. 垃圾收集器asp.net
- 25. 垃圾收集器vs池
- 26. .NET垃圾收集器
- 27. 垃圾收集器Flash Player
- 28. Jruby,垃圾收集器,Redis
- 29. SpiderMonkey垃圾收集器
- 30. 我們可以在java中有一個自定義的垃圾收集器嗎?
這看起來像存儲器泄漏的症狀(其是難以跟蹤在java的次) – Chii 2009-07-16 10:48:50