JVM 把内存分为几块不同的数据区
1.方法区
2.java堆
3.java栈
4.本地方法栈
java 堆
是被所有线程共享的一块内存区域,主要是存放对象实例的.
那么怎么分,有两种办法,
1.指针碰撞
就是一大块.一次找到一块的大小,然后指针往后移这么大的,
2.空闲列表法
有的时候不是连续分配的. 所以就用一张表,记录下来哪些地方是空闲的.’
然后创建对象是一个频繁的操作啊. 你想想你的代码中是不是时常new 一个对象
这就涉及到多线程并发的问题了,解决这个问题两个方案
1.CAS保证数据操作的原子性
2.按线程分配内存,然后预先分配一个块,本地线程分配缓冲TLAB
本文介绍了JVM内存划分,包括方法区、Java堆、Java栈及本地方法栈等关键区域的功能。详细讨论了Java堆作为线程共享内存的主要用途,并探讨了对象分配策略如指针碰撞与空闲列表法。此外,还分析了并发环境下创建对象的解决方案。
892

被折叠的 条评论
为什么被折叠?



