JVM 划重点 之一虚拟机内存模型

hostpot 虚拟机 运行时数据区内存模型

jvm虚拟机内存分布模型

  • 白色部分为 jvm运行时所有线程的共享内存
  • 蓝色部分为 线程独享内存

一 共享内存

1 方法区特性

  • 用于存储虚拟机加载的 类信息, 常量, 静态变量 即时编译器编译后的代码等
  • jvm规范描述 其为堆的一个逻辑部分, 但又有所区分。别名 No-Heap 非堆
  • GC 很少对这部分内存进行回收 因为收效甚微
  • GC 的主要回收目标是 这部分的运行时常量池(String.intern 等方法会会产生 运行时常量) 以及 类型的写在

2 堆的特性

  • 存放对象实例,几乎所有对象内存都在此处分配
    (随着逃逸分析 标量替换 栈上分配 等技术的发展,使得并非所有对象实例都会在堆上分配)
  • GC 的主要回收目标 为了方便收寄 堆内存还分为了 新生代和老年代
  • 堆得内存可以配置为 可扩展的 通过 -xmx -xms 来控制

二 线程私有内存区域

1 程序计数器

  • 一小块区域 指引线程代码运行顺序

2 虚拟机栈

  • 生命周期与线程相同
  • 存储 局部变量表等信息
  • 局部变量表 : 存放了 各种编译时可知的数据类型,和对象引用

3 本地方法栈

  • 区别于 虚拟机栈 为 native 方法服务

三 其他内存区域

  1. 直接内存:使用 本地方法 native , 直接分配 堆外内存
发布了17 篇原创文章 · 获赞 24 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/qq_22956867/article/details/78041877
今日推荐