java内存区域管理机制
2019-09-18 本文已影响0人
HelloWide
java内存区域
![](https://img.haomeiwen.com/i3144413/6eb206041b59b871.png)
特例:
直接内存->堆外内存,不属于java运行时数据区的一部分,常见的NIO
对象创建过程
- new指令;
- 检查能否在常量池中定位到一个类的符号引用,检查该类是否已经被加载、解析和初始化,如果没有需要执行相应的类加载过程;
- 为新生对象分配内存:基于不同的垃圾回收算法决定使用指针碰撞or空闲列表;
- 并发问题处理:1-同步,基于cas机制和失败重试的方式,2-本地线程分配缓冲(TLAB),每个线程在java堆中预先分配一小块内存;
- 对象头设置:相关的元数据信息,哈希码,GC分代年龄等信息
结语:java内存区域还有诸多细节,不过开发关注的主要就是这上诉两部分。