jvm对象内存划分

额外概念了解

**jvm内存空间是逻辑上连续的虚拟地址空间(虚拟内存中的概念)映射到物理内存(不一定连续),物理内存不足时还会将物理内存中的数据交换到swap(磁盘的一块区域)。**这块水有点深,查阅资料做了个个人的总结。

内存划分,有指针碰撞空闲列表这两种划分方式:

1、指针碰撞

当内存区域规整排列,也就是说已用内存放在一边,空闲内存放在一边,中间用指针作为分界点,在给新的对象分配内存时,可以将指针向空闲端移动对象大小的距离。碰撞是由于指多线程访问时,因内存共享,会存在内存冲突(指针碰撞)的情况,当然可以使用CAS和TLAB两种方式解决

2、空闲列表

当内存区域不规整排列,已用内存和空闲内存交错,此时无法通过指针碰撞划分内存,jvm通过维护一个空闲列表,用来记录空闲内存区间,新对象内存分配时,找到一块足够大的内存空间去分配,并更新空闲列表。

3、那么指针碰撞和空闲列表的使用时机是什么,或者说什么时候内存区域规整或者不规整呢?

不同GC垃圾回收器有不同垃圾回收算法,对于标记-整理算法,内存区域是规整的。而标记-清除算法,内存区域是不规整的。因此也验证了为何标记清除算法会产生内存碎片的问题。

相关推荐
qq_3806191610 分钟前
HTML函数开发需要独立显卡吗_HTML函数与显卡关系详解【说明】
jvm·数据库·python
2201_7568473332 分钟前
Golang如何处理JSON空值null_Golang JSON空值处理教程【精通】
jvm·数据库·python
hef28842 分钟前
怎么诊断MongoDB Config Server响应极慢的问题_高频Auto-split导致的元库写入压力
jvm·数据库·python
qq_380619161 小时前
html怎么用deno运行_Deno如何作为本地服务器运行HTML文件
jvm·数据库·python
u0107475461 小时前
mysql如何实现高可用集群架构_基于MHA环境搭建与部署
jvm·数据库·python
qq_380619161 小时前
如何在phpMyAdmin中处理特殊字符账号名的授权_反引号的正确包裹
jvm·数据库·python
2201_756847331 小时前
HTML函数在老旧浏览器运行慢是硬件问题吗_软硬协同分析【教程】
jvm·数据库·python
雨墨✘2 小时前
CSS如何提高团队协作效率_推广BEM规范减少样式沟通成本
jvm·数据库·python
hef2882 小时前
如何实现SQL字段值的计算输出:算术运算符与别名结合
jvm·数据库·python
发发就是发3 小时前
顺序锁(Seqlock)与RCU机制:当读写锁遇上性能瓶颈
java·linux·服务器·开发语言·jvm·驱动开发