首页
学习
活动
专区
圈层
工具
发布

JVM实例
EN

Stack Overflow用户
提问于 2010-09-06 22:50:50
回答 5查看 14.8K关注 0票数 11

通过两个不同的命令行调用java是否涉及两个不同的JVM或同一JVM的两个单独的实例。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-09-06 23:17:00

JVM是Java虚拟机,一个加载类(代码)和共享对象(数据)的内存空间。JVM等同于一个操作系统进程。

当您在命令行中输入java...时,您正在执行一个独立的进程,该进程将Java类加载到内存中,从Java和您的(从您指定的.class文件或.jar )加载基类。

另一个java...命令将使用自己的内存加载一个不同的进程,并自行加载类。

实例单词混淆:当您说“同一个JVM虚拟机的两个实例”时。通常将JVM的实例称为单独的进程,即加载的独立JVM。如果你说:两个进程正在运行JVM 1.5,好吧,这是同一个JVM,从某种意义上说,它是相同的版本,但它们是不同的进程,不同的‘实例’,在所有意义上都是独立的。

webapp混淆:webapp(举个例子)只是一堆实例化的类和对象,处理web服务器中的一些。你可以用10个不同的应用程序-it启动Tomcat,10个不同的类和对象捆绑在一起,每个都处理不同的请求,但实际上它们共享相同的内存空间(操作系统进程)。一个webapp不能接触其他webapp的对象,因为没有人给它提供对其他对象的引用(类在某种程度上是隐藏的,但那是另一个故事,叫做:类加载)。

票数 25
EN

Stack Overflow用户

发布于 2010-09-06 22:52:50

你的问题有什么不同?我会说:两个不同的JVM实例。:)

每次运行java命令都会调用一个新的JVM实例。运行的java应用程序可以运行新的Java线程(就像Tomcat对web应用程序所做的那样)。

票数 3
EN

Stack Overflow用户

发布于 2010-09-06 22:53:43

两个独立的JVM。你可以在同一个JVM中运行很多东西(比如同一个tomcat实例提供了10个webapp),但是只有一个java命令可以启动Tomcat。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3652353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档