Java内存结构
2019-01-31 本文已影响0人
helloWorld_1118
JVM总图:
类加载器,执行引擎,运行时数据区
image.png类加载子系统,执行引擎,运行时数据区,三部分关系图
image.png线程独享部分结构关系
image.png类的加载过程(生命周期)
image.png类加载器
image.png类加载机制
image.png堆
存放Java对象,所有的对象(包括数组,但Class对象除外)数据实际存放地方。堆是程序级别,每一个Java程序共享一个堆(所以存在多线程访问堆内存同步问题)
image.pngjdk1.8:取消了永久代,由元数据区替代,常量池在元数据区
jdk1.7:有永久代,但已经逐步“去永久代”,常量池在堆
jdk1.6:有永久代,常量池在方法区
方法区
存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等
https://www.cnblogs.com/duanxz/p/3728737.html
栈
存的是引用(如果是基本类型,则存的是值),引用(直接或间接)指向堆中的对象。栈是线程级别,每一个线程有各自的栈。栈又分为两种,一是Java方法栈,一是本地方法栈(nativie method stack)。另外,每个线程都有各自的程序计数器,也是栈格式的。
直接内存
堆和栈区别
https://www.cnblogs.com/ityouknow/p/5603287.html
https://www.cnblogs.com/ityouknow/p/5610232.html