首页 > 应用开发 > Java > JVM内存管理——总结篇
程序计数器
本地方法栈
与虚拟机栈类似,为Native方法服务
Java虚拟机栈
Java堆
线程共享、唯一目的存放对象实例
方法区
存储类型信息、常量、静态变量、代码缓存等
运行时常量池
编译期生成的字面量和符号引用
直接内存
Java堆中的DirectByteBuffer对象对这块内存直接操作,避免数据在Native和Java堆中来回复制。
普通对象的创建过程
Java堆为实例分配内存的方式
选择哪种方式由Java堆是否规整决定的,而Java堆内存是否规整由垃圾回收器是否带有空间压缩整理能力决定的
Serial、ParNew === > 指针碰撞
CMS=== >空闲列表
连续空间
使用指针碰撞方式,移动被占内存和可用空间的指针来分配。多线程发生内存冲突时,利用CAS加失败重试保证分配;或者本地线程分配缓存(TLAB)方式分配内存
非连续空间
维护一张列表,记录可用空间,分配内存更新列表
对象内存布局
对象的两种访问定位
栈中的reference数据引用,引用分为“句柄访问”、“直接指针访问”两种
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959503/viewspace-2722524/ ,如需转载,请注明出处,否则将追究法律责任。