在我自己的剖析器上工作,我想解释一下我所看到的.即使在最简单的程序中,也会出现一些默认线程:
虽然他们的名字非常自我记录,但我希望获得更多信息.似乎这些线程没有记录,有人知道挖掘这些信息的来源,甚至知道这些线程到底做了什么吗?
当我使用NetBeans运行下面提到的代码时,分配的堆大小图类似于锯齿形状.我附加了JVisualVM的屏幕截图,它显示了锯齿形状的堆分配图.该程序是一个简单的无限循环打印"Hello,World!" 进入控制台.
public class HelloWorld {
public static void main(String a[]){
while(true) {
System.out.println("Hello, World!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释使用堆图形状背后的原因吗?
PS:即使我在不使用NetBeans的情况下运行它也会发生这种情况,因此它很可能与NetBeans无关......
两者之间有什么区别吗?我正在阅读一篇关于你应该总是使用的文章(http://www.javalobby.org/java/forums/t17933)
System.exit(0);
Run Code Online (Sandbox Code Playgroud)
目前我用
JFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
Run Code Online (Sandbox Code Playgroud)
文章说,即使对于Java Swing应用程序,您也应该添加一个监听器WindowAdapter并System.exit()在其方法中调用windowClosing(WindowEvent e).
有什么区别吗?一种方法比另一种更好吗?
我创建了一个简单的Java应用程序,它有一个JFrame和几个JButton.当我尝试使用JVMTI检查java应用程序时,我发现虽然我没有创建任何显式线程但是它们中有很多产生.
我可以找到以下主题:
他们中的大多数都处于Runnable状态.有人能告诉我这些线程的功能吗?