Java内存区域鉴赏

JDK 1.8之前:
JDK 1.8 :

 
Java内存区域对比 JDK 1.7
名称 包含数据类型
oom、Stack Overflow场景
是否线程共享
程序计数器 字节码指令
Java栈 栈帧(局部变量表【基础类型和对象引用】、操作数栈、方法出口、附加信息、指向运行时常量池的引用) 线程请求虚拟机栈深度大于虚拟机所允许的深度(STF),虚拟机栈可以动态扩展,无法获取到足够的空间(OOM)
Native栈 与Java栈相同  
方法区 编译器编译后的代码、类的信息(类的方法、方法信息、字段信息)、静态变量 用大量的类去填满方法区就好了,比如用类加载去加载jar包
运行时常量池(方法区的一部分) 编译器生成的字面量和符号引用(符号引用就是不能知道具体内存的一个标识,用于表达源代码中一个固定值的表示法| int a = 10; // 10为int类型字面量)不同于Class文件常量池,动态性(运行期也可以放入)  
对象实例数据、数组、常量池     限制堆内存大小为20MB,不断产生新对象

猜你喜欢

转载自www.cnblogs.com/famousli/p/11983471.html