Java内存

内存结构

JVM的内存结构大概分为:

  • 堆(heap):线程共享,所有的对象实例以及数组都要在堆上
  • 方法区: 线程共享,存储类信息,常量
  • 方法栈(JVM stack): 线程私有,存储局部变量表,操作栈,动态链接,方法出口,对象指针
  • 本地方法栈: 线程私有,为虚拟机使用到Native方法服务
  • PC寄存器: 线程私有,指向下一条要执行的指令
对象内存分配
  • 指针碰撞(Bump the Pointer)
  • 空闲列表(Free List)
    选择哪种分配方式由java堆是否规整决定,而Java堆是否规整又由所采用的垃圾收集器是否带有压缩整理功能决定

对象的内存分布

java内存结构.png
CG 判断可回收垃圾

目前主流的虚拟机都是采用GC Roots Tracing算法,比如Sun的HotSpot虚拟机便是采用该算法,该算法的核心算法是从GC Roots对象


WechatIMG15.jpeg

参考链接

深入浅出Java垃圾回收机制

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.概述 对于 Java 的开发者来说,在虚拟机的自动内存管理机制的帮助下,不再需要为每一个 new 操作去写配对...
    SawyerZh阅读 3,191评论 3 81
  • 面试中问到“内存模型”,通常是考察Java内存结构和GC,而不是Happens-Before等更深入、细致的内容。...
    猴子007阅读 840评论 3 11
  • 最近学习Python的GC机制时,想到了java的GC,忘得差不多了,(⊙﹏⊙)b!!这里便做一下回顾总结。推荐周...
    廿陆小生阅读 874评论 0 0
  • 01 周五,早上七点。弘砺中学王老师办公室。 “王老师,我们家李涛成绩太差了。尤其是这理科,你看看他的试卷,才考9...
    杨喜爱阅读 788评论 12 21
  • 那天,小旖如约去本地最好的牙科看牙。相约的这位Mr 赵怕就是这小城中最有名且最有钱的牙医了吧。每位顾客从第一次预约...
    打起鼓儿喵阅读 276评论 0 1