在Java中,程序之间共享静态类成员吗?
问题内容:
我想不,不是,因为每个进程当然都有自己的内存空间。
但是整个JVM实际如何工作?我启动的每个Java程序在单独的进程中是否都有单独的JVM?系统中运行的Java程序是否共享任何东西?操作系统和JVM实现之间有区别吗?是否可以
使 程序共享变量(即直接通过JVM而不是通常的IPC机制)?是否有更多特殊用途的单进程JVM?
通常,关于JVM胆量的推荐读物是什么?该规范?一些实现的源代码?网站?图书?
问题答案:
在Java中,程序之间共享静态类成员吗?
一个类由其全名和加载该类的类加载器定义。如果同一类位于同一JVM进程内,并且两个程序通过同一类加载器加载了该类,则将共享静态成员。类加载规则极为重要。
我想不,不是,因为每个进程当然都有自己的内存空间。
如果您使用两个单独的JVM启动两个应用程序,那么您是正确的。但是以诸如tomcat之类的应用程序/
servlet容器为例:它们通过同一进程(tomcat主机进程)加载多个应用程序。
但是整个JVM实际如何工作?我启动的每个Java程序在单独的进程中是否都有单独的JVM?系统中运行的Java程序是否共享任何东西?
每次>java -cp...
在命令行上键入时,都在创建一个新进程。请记住,当您运行eclipse或调用ant
java任务时,fork=true
您也在创建新进程。
操作系统和JVM实现之间有区别吗?是否可以使程序共享变量(即直接通过JVM而不是通常的IPC机制)?是否有更多特殊用途的单进程JVM?
就像海报上所说的那样,有Terracota之类的项目可以为您提供便利。这种共享的一般方法是分布式缓存。