如何解决执行多个Java应用程序时Java虚拟机将执行的操作
JVM和其他任何进程一样,是一个标准过程。因此,两者之间没有隐式的通信或状态共享。每个都将拥有自己的堆,线程等。如果杀死一个,则不会影响另一个。
什么 将 得到共享是JVM本身的代码页。内核足够智能,可以识别运行两次的相同二进制文件( 任何 二进制文件- 而不仅仅是JVM)并重用映像。这仅适用于实际的二进制代码- 不适用于其状态。
JVM不是守护进程,但是可以在系统启动时作为Windows服务或Unix /
Linux进程(通过/etc/init.d
脚本)启动。这是引导计算机时运行(说)用Java编写的Web服务的方式。
解决方法
通过阅读本文,我知道每个Java应用程序都将在特定的Java虚拟机实例中运行。因此,如果我执行以下命令(“
Java -jar test1.jar”,“ Java -jar
test2.jar”),我将在系统中获得两个进程。并且,如果每个命令都使用默认堆大小,例如256M。总内存成本为512M,对吗?还有其他问题:
- Java虚拟机是一个守护进程,由系统启动吗?
- 当我执行“ java -jar test1.jar”时,它将创建Java虚拟机的实例,然后执行主要功能。这是否意味着每个正在运行的Java应用程序都是Java虚拟机的子线程或进程?
- 每个正在运行的Java应用程序是否都是单独的,其他应用程序无法从此正在运行的Java应用程序获取变量,方法,常量等?
- 如果一个正在运行的Java应用程序崩溃了,会影响其他正在运行的Java应用程序吗?
PS:我在Google上搜索并得到许多不同的答案,我完全感到困惑。任何可以帮助我解决此类问题甚至更深入的Java虚拟机的人。例如,它如何工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。