2013-02-08 23 views
0

我有一些內存問題的應用程序,所以我開始玩像VisualVM這樣的分析器。爲什麼我暫停的應用程序仍在創建實例?

如果我啓動我在調試應用程序,並達到一個斷點(至極暫停的應用程序),我仍然看到正在創作了大量的幾個類的實例(主要是intcharObjectTreeMap$Entry,...)。

這是爲什麼?

+0

請詳細說明。什麼樣的應用程序?你使用IDE等IDE嗎? – Chedy2149

回答

2

斷點可能只是暫停了碰到它的線程,而其他線程則樂於繼續完成他們預期的工作。爲了找出他們做了什麼,他們的名字可能會顯示一些,但沒有什麼比線程轉儲(你可以讓VisualVM爲你做)。另外,您通常可以決定是否應該暫停一個線程,或者應該暫停所有線程。具體如何做到這一點是IDE特定的,當然(但通常在「斷點屬性」或其他)。

0

大多數java應用程序只有很少的線程。至少兩個:主應用程序線程和GC(垃圾收集器)線程。

當您調試應用程序並停止斷點時,您總是(主要排除Web和多交易應用程序)停止一個線程。另外在調試模式下可以添加幾個添加線程。

相關問題