1、命令启动了两个java程序,它们之间是什么关系;
2、java程序又和JVM之间是什么关系,它们是公用一个JVM,还是每个java程序,都有一个JVM。
1、命令启动了两个java程序,它们之间是什么关系;
2、java程序又和JVM之间是什么关系,它们是公用一个JVM,还是每个java程序,都有一个JVM。
收起
当前问题酬金
¥ 0 (可追加 ¥500)
支付方式
扫码支付
2个进程肯定是2个jvm实例,我们jps调优的时间jps的pid对应的是一个实例的id,并且我们后面分析jvm都是在某一个pid下进行分析这个虚拟机实例。
2个pid肯定对应的两个jvm,要不我们平时监控一个pid如何能分析出来是程序的哪块出问题呢(能找到问题,jvm的信息都是在这个pid下的情况),连个
进程要是在一个jvm下,岂不是很乱看不出问题么、
1.程序的运行是以进程在内存中的运行形式体现的。当你启动一个程序时,系统会调用其对应进程进入内存运行,图中进程的pid即为进程的唯一标识符。然后进程之间是并发执行的。准确的说,你启动的是java程序,但系统运行的是进程,因为程序是静态的,进程才是动态的,也就是程序并不会进入内存运行,而是其对应进程进入内存运行。
2.是公用一个JVM的,这个就类似你电脑自己的操作系统,打开两个程序肯定是在同一个系统内存中运行的,原因就是我问题一中说的进程是并发执行的。
望采纳,谢谢。
命令行启动的java程序是共用一个jvm的,启动一个程序就是在jvm中开启一个进程,每个进程至少有一个线程,当然可以有多个线程,
线程之间通信比较简单,就像java书上讲的一样,但进程间的通信复杂点,如管道、内存映射、内存共享、消息队列、socket等,你可以简单理解为两个进程间没关系
一个java程序对应一个进程,一个jvm实例,进程之间互不干涉,jvm实例之间也互不影响,你干掉其中一个程序并不影响另外一个的正常运行
进程与进程之间是互不干扰的,可以并行的,一个程序(不管是什么程序)占用一个进程,但可以占用多个线程,jvm是用来将.class文件解释成二进制并让计算机能够识别的,要说联系的话,就是jvm运行解释.class文件之后会形成进程
只有一个jvm,jvm就是虚拟机,用来运行编译程序的
一个java程序对应一个进程,进程和jvm实例之间互不影响
报告相同问题?