Java内存

内存结构

JVM的内存结构大概分为:

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

对象的内存分布

Java内存_第1张图片
java内存结构.png
CG 判断可回收垃圾

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


Java内存_第2张图片
WechatIMG15.jpeg

参考链接

深入浅出Java垃圾回收机制

你可能感兴趣的:(Java内存)