Java内存模型解读

JVM运行时数据区有哪些?

  • 程序计数器
  • 虚拟机栈
  • 本地方法栈
  • 堆内存
  • 方法区
  • 运行时常量池

什么是堆内存

由程序代码自由分配的内存,与栈内存作区分。

在Java中,堆内存主要用于分配对象的存储空间,只要有对象引用,所有线程都可以访问堆内存。

堆内存包括哪些部分

  • young(年轻代)
    • eden区
    • survivor区
  • old(老年代)

什么是非堆内存

以Java8为例

  • MetaSpace(元空间)
  • CodeCache
  • Compressed Class Space(CCS)