我一次在同一台机器上运行同一应用程序的2个实例(使用java-jar MyApp.jar)。在我的一个类中,我创建了一个类级变量(静态)。两个应用程序是否共享相同的静态变量,因为它们在同一JVM下运行,或者将为两个实例创建单独的JVM实例。
如果创建了单独的JVM实例,则类加载器加载2个具有静态变量的My class的独立实例?
我没有使用任何自定义类加载器*
答案 0 :(得分:1)
不,他们不会共享相同的变量。
除非使用IPC或某些其他进程通信协议,否则每个进程都会分配自己的内存空间,并且无法访问其他进程的内存。
答案 1 :(得分:0)
如果致电java - jar MyApp.jar
,您将启动新JVM 。这个JVM加载自己的类,有自己的内存和自己的线程(等等)。它不会与之前或之后启动的任何其他JVM共享任何内容。两个JVM都没有以任何方式相互连接。你只需启动你的应用两次。