关于 JVM 进程和系统进程

2018-12-25 15:44:10 +08:00
 Vtwoguest
一个 Java 程序运行在 JVM 上;此时这个有程序运行的 JVM 是当前系统的一个进程;而此时 Java 程序是 JVM 上的一个进程,这样理解对吗
1847 次点击
所在节点    Java
9 条回复
a510431599
2018-12-25 15:52:03 +08:00
JVM 是一份本地化的程序,本质上是可执行的文件,是静态的概念。程序运行起来成为进程,是动态的概念。
java 程序是跑在 JVM 上的,严格来讲,是跑在 JVM 实例上的,一个 JVM 实例其实就是 JVM 跑起来的进程,二者合起来称之为一个 JAVA 进程。
各个 JVM 实例之间是相互隔离的
qwertty01
2018-12-25 16:00:39 +08:00
neoblackcap
2018-12-25 16:03:21 +08:00
JVM 的进程实现直接使用系统进程,线程也是。你的程序是在被 JVM 解释或者 jit 后执行,你所谓的程序是执行的内容,不存在你的程序另外在一个进程跑,是 JVM 在跑你的程序,没有 JVM,你的程序无从谈起。
Vtwoguest
2018-12-25 16:06:42 +08:00
@qwertty01 前 10 个都看了才来问的,没看到说名词上下文的
Vtwoguest
2018-12-25 16:16:08 +08:00
@neoblackcap 是不是 JVM 只是一个媒介,解释后 Java 程序还是相当于运行在系统进程里;然后 JVM+JAVA 程序是就组成了当前系统进程
neoblackcap
2018-12-25 16:19:15 +08:00
@Vtwoguest 你这样理解,大体没有错,是 JVM 加你写的 Class 文件组成了你的程序,JVM 就是你程序的运行时,runtime。这些概念你应该去看一些基础的书补一下。
Vtwoguest
2018-12-25 16:22:57 +08:00
@neoblackcap 好的,谢谢
qwertty01
2018-12-25 17:05:57 +08:00
@Vtwoguest 唉,我看了也都不行。

真正用法应该是去谷歌

出来第一个是这个 https://blog.csdn.net/ghj1976/article/details/5481038

还有这个 https://www.ibm.com/developerworks/cn/java/j-lo-processthread/index.html
Vtwoguest
2018-12-25 17:07:32 +08:00
@qwertty01 好的,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/520854

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX