方法区与java堆一样都是各个线程共享的内存区域,它用于存放类型信息,域信息,常量,JIT后的代码缓存等数据。原本在方法区中的静态变量、字符串常量池在jdk7以后便迁移到了堆中。
JDK8版本中彻底放弃了永久代的,改为了采用本地内存来实现方法区,即元空间MetaSpace。静态变量、字符串常量池仍然存放在堆里。
关于静态变量存放在了哪里,网上总所纷纭,其实oracle官方给出了明确的说明。
http://openjdk.java.net/jeps/122
方法区与java堆一样都是各个线程共享的内存区域,它用于存放类型信息,域信息,常量,JIT后的代码缓存等数据。原本在方法区中的静态变量、字符串常量池在jdk7以后便迁移到了堆中。
JDK8版本中彻底放弃了永久代的,改为了采用本地内存来实现方法区,即元空间MetaSpace。静态变量、字符串常量池仍然存放在堆里。
关于静态变量存放在了哪里,网上总所纷纭,其实oracle官方给出了明确的说明。
http://openjdk.java.net/jeps/122