java静态变量和进程

如果我声明一个变量static并将此类编译为可执行jar。 如果我使用这样的批处理文件启动此类:

java MyClass java MyClass java MyClass 

所有3个进程都会共享相同的变量吗?

否。静态变量特定于JVM实例。 事实上,它不仅仅是加载类的类加载器 。 因此,如果您创建了三个单独的类加载器,每个加载器负责加载MyClass (不仅仅是委托给一些常见的父类),它们每个都在MyClass有一个独立的独立静态变量。

静态资源是每个类加载器,因此,您的3个进程显然有三个不同的类加载器,因此不会共享变量。