最近有在背各种线上CPU飙高的排查方案,其实之前也背了多次就是容易忘记。其实归根到底,就是对jvm啊,进程,线程之类的东西不了解。
Let’s 记录
Java进程之间以及跟JVM关系
进程、线程与JVM之间的关系
- java编写的程序都运行在在Java虚拟机(JVM)中,每用java命令启动一个java应用程序,就会启动一个JVM进程。
- 在同一个JVM进程中,有且只有一个进程,就是它自己。在这个JVM环境中,所有程序代码的运行都是以线程来运行的。JVM找到程序程序的入口点main(),然后运行main()方法,这样就产生了一个线程,这个线程称之为主线程。当main方法结束后,主线程运行完成。JVM进程也随即退出。
如下图所示:
Java进程之间以及跟JVM关系:
以下内容来源:
Java进程之间以及跟JVM关系
先提出两个问题:
1、命令启动了两个java程序,它们之间是什么关系?
2、java程序又和JVM之间是什么关系,它们是共用一个JVM,还是每个java程序,都有一个JVM?
演示
1、用命令启动两个一样的java程序。
2、用jvisual观察到有两个WhileTrue程序的进程。