jvm基础大回顾

运行时数据区域
线程共享:堆和方法区 线程独享:虚拟机栈,本地方法栈,程序计数器
对象在内存中的分布
对象结构包括对象头和对象体 对象在内存中定位包括直接指针和句柄池两种方法
如何分配对象内存
指针碰撞:内存规整,指针移动对象大小的距离即可完成分配; 空闲列表:内存不规整,需要维护一个空闲列表,记录空闲的位置以及位置大小,找到合适的空间进行分配; tlab:线程本地分配缓冲,并发情况下每个线程在堆中预先分配一小块内存,哪个线程要分配内存就在其本地缓冲区分配,直到分配新的缓存区才需要同步锁定;
对象回收 先判生死 引用计数法:对象记录其他对象对他的引用情况,引用失效再更新,可能产生循环引用,无法被回收 可达性分析:GCroot根节点枚举,采用三色标记法,没有被标记到的对象被回收
回收算法 标记清除:标记后清除,会产生内存碎片但是快,不会STW 标记复制:标记后复制存活对象到未使用空间,一次性清理原空间

jvm基础大回顾最先出现在Python成神之路

版权声明:
作者:Alex
链接:https://www.techfm.club/p/21469.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>