JAVA 虚拟机-内存分配

内存分配模型

1.7之前

线程私有:PC、VM stack(栈帧 stack frame,运行java方法分配栈)、Native method stack( 本地方法栈,比如实现C)

线程共享:堆(Java对象实例,包括通过.class生成的类对象)、方法区(永久代,存一些类信息,常量、静态变量,编译后的代码,永久代java8后放入本地内存(元空间MetaSpace))

方法区的概念,及其现状?

Java1.7以前,方法区存储在JVM内存中,是永久代的实现,其存储着运行时常量,静态变量,类信息, 符号引用 。

Java1.7 符号引用存储在native heap中,字符串常量和静态类型变量存储在普通的堆区中。

Java1.8 撤销了方法区,变为了元空间( Metaspace )分配在本地内存, 元空间的出现就是为了解决突出的类和类加载器元数据过多导致的OOM问题。 只存储类和类加载器的元数据信息。





除非注明,否则均为一叶呼呼原创文章,转载必须以链接形式标明本文链接

本文链接:http://www.yiyehu.tech/archives/2020/05/28/java-jvm-memory-allocation

发表评论

电子邮件地址不会被公开。 必填项已用*标注