【发布时间】:2014-05-05 07:20:47
【问题描述】:
我正在运行这个极其简单的程序:
class helloWorld {
public static void main(String[] args) throws InterruptedException {
while(true) {
System.out.println("Hello World!");
Thread.sleep(1000);
}
}
}
而且我不明白为什么java虚拟机分配了这么多进程(它们有不同的PID),你可以看这里吗(htop_java_helloworld.png):
我什至怀疑指令Thread.sleep(1000),但如果将其删除,奇怪的行为不会改变。
更新
很抱歉,我忘了提及一些有用的细节:
- 系统是 Debian GNU/Linux Jessie
- 安装的JVM来自openjdk-7-jdk包
- 输出来自
htop,我已使用\java对其进行过滤,因此只列出了有用的进程
我使用命令javac helloWorld.java 编译了问题开头编写的源代码,然后使用命令java helloWorld 运行它。
我只运行一个程序实例,所有这些进程都被分配,当我用ctrl+c杀死它时,所有列出的进程都消失了,所以没有更多的程序实例正在运行同时。
【问题讨论】:
-
你的操作系统是那个?真的很酷..
-
我不明白这种行为。您是否多次运行它而不杀死它(因为程序永远不会死)?然后无论您运行多少次,它都会显示出来。
-
如果显示程序的输出,请说出程序是什么。现在,我们必须从您链接到的图片的文件名 中猜测它是
htop。相当脆弱... -
全部:您可能会想发布一个答案(就像我一样)说“我没有得到那个结果”——在您这样做之前,请确保您使用的是 *nix-like系统,并使用以下命令进行检查:
top -H -c -p $(pgrep -d',' -f java)然后查看 Stephen C 的答案。 :-) -
@all 我更新了问题,很抱歉原始版本中缺少细节。