1.相关概念
1.开篇
Arvin小编又来写技术博文啦,做个小小的笔记,顺便给一些人扫扫盲,最近对Java 的GC(垃圾回收机制)特别感兴趣。很早就知道在C/C++ 这类语言中需要程序猿自己去操作对内存的管理 什么 alloc, dealloc啦之类的。当初学OC的时候也有这么一章节。但是说到java很少有人会说到管理内存这块知识。java相比C语言在内存管理这块先进了好多,因为java的内存是自动管理的,光自动这个词就知道很高级有木有。但是java是怎么去创建和释放内存的呢。这个很有必要扒一扒,毕竟听说有些面试上来就问java的GC是怎么work的。还有就是这一块属于jvm的基本知识。
2.预备知识
这篇文章只要是为后面的GC分析来做基础知识扫盲的,主要是讲jvm的内存分配。以前提到过jvm的内存就分2块 一个栈(stack)一个堆(Heap),其实这个是错的,没有这么简单,还是有点小复杂的,好了来扒一扒jvm的内存
2.JVM内存
1.结构

heap中2块地方 句炳池和实例池,句炳用来找到实例和对象类型数据
方法2)直接访问,就是取消了句炳了。直接存储实例的地址,直接访问到实例数据

二者的优缺点:句炳的话,如果数据发现改变移动 reference里面的值是不会变的。直接访问的话效率更好速度更快,sum hotspot vm就是用的直接访问.
第一篇文章到这里结束啦。主要介绍了vm的内存分配,如果大家要测试oom可以修改vm对应的参数。
网友评论