07 JVM内存分配
07 JVM内存分配
① JVM内存分区
1. 栈
Java栈区域比较小,空间大约1M,特点:(存取数据)速度非常快,在栈里边执行的基本上都是快速的任务:基本数据类型和对象的引用。
2. 堆
new出来的对象都存放在堆里边,堆里边的每一个对象都会产生一个唯一的地址。内存地址会赋值给栈里边的引用。堆里边的对象需要垃圾回收机制才能销毁。要销毁一个对象:对象=null。程序员无法控制的,java堆比较占内存的地方。
3. 方法区
又称为静态区,被所以线程共享的区域。
1. 类(class)
2. 常量
3. 成员方法
4. 静态方法
5. 静态变量
6. 常量池:主要存放开发过程中涉及到的自变量(例如:String s = "123";s存在栈中 123存在常量池中)
4. PC寄存器
主要用来保存JVM的指令以及地址
5. 本地方法栈
主要用来保存native方法进入区域的地址
② 栈和堆的内容
书架-----堆结构
盒子-----栈
1.栈
栈是一端受限,一端运行操作的线性表。先放的后取,后放的后取,对于栈来说,先进后出(LIFO)。
存储数据有两种结构:
1. 顺序存储:首先要分配一个足够大的数组。控制这个结构,一端进行增删操作,一端不允许操作。在这个结构中,让操作的成为栈顶,不让操作的叫栈底
2. 链式存储:采用链式结构,控制了入栈和出栈的一个端口,控制一端不能操作
优点:要多少申请多少,但是用完了一定要释放空间。
2. 堆
其实就是经过排序的一种树形数据结构,堆的数据结构指的就是二叉树,堆可以看成是一棵树的数组结构,需要从书架上取出一本书,不需要将其它书都拿下来,直接取你想要的数
posted on 2019-03-09 23:56 PenjayFeng 阅读(98) 评论(0) 编辑 收藏 举报