为什么我暂停的应用程序仍在创建实例?

时间:2013-02-08 10:11:52

标签: java performance debugging instance

我有一个带有一些内存故障的应用程序,所以我开始使用分析器,如VisualVM。

如果我在调试中启动我的应用程序并到达断点(暂停应用程序),我仍然会看到很多类的实例被创建(主要是intchar,{{1 },Object,...)。

为什么?

2 个答案:

答案 0 :(得分:2)

断点可能只是暂停了击中它的线程,而其他线程很乐意继续做他们想要的工作。为了找出他们做了什么,他们的名字可能会显示一点,但没有什么比线程转储(你可以让VisualVM为你做的那样)。

此外,您通常可以决定单个断点是否应该只挂起一个线程,还是应该挂起所有线程。当然,具体的IDE是如何做到的(但通常在“断点属性”中,或者某些类似)。

答案 1 :(得分:0)

大多数java应用程序都有很少的线程。至少两个:主应用程序线程和GC(垃圾收集器)线程。

当您调试应用程序并在断点处停止时,您总是(主要是排除Web和多交易应用程序)只停止一个线程。另外在调试模式下可以添加一些额外的线程。