我有一个带有一些内存故障的应用程序,所以我开始使用分析器,如VisualVM。
如果我在调试中启动我的应用程序并到达断点(暂停应用程序),我仍然会看到很多类的实例被创建(主要是int
,char
,{{1 },Object
,...)。
为什么?
答案 0 :(得分:2)
断点可能只是暂停了击中它的线程,而其他线程很乐意继续做他们想要的工作。为了找出他们做了什么,他们的名字可能会显示一点,但没有什么比线程转储(你可以让VisualVM为你做的那样)。
此外,您通常可以决定单个断点是否应该只挂起一个线程,还是应该挂起所有线程。当然,具体的IDE是如何做到的(但通常在“断点属性”中,或者某些类似)。
答案 1 :(得分:0)
大多数java应用程序都有很少的线程。至少两个:主应用程序线程和GC(垃圾收集器)线程。
当您调试应用程序并在断点处停止时,您总是(主要是排除Web和多交易应用程序)只停止一个线程。另外在调试模式下可以添加一些额外的线程。