美文网首页
JVM 读书笔记(一)之 java 内存区域

JVM 读书笔记(一)之 java 内存区域

作者: innovatorCL | 来源:发表于2017-12-13 22:36 被阅读9次

1.java 运行时数据区域

java 虚拟机运行时的数据区
  • java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。几乎所有的对象实例和数据都要在堆上分配内存。

  • 方法区也是被各个线程共享的区域,存储已被虚拟机加载的类信息(类名、访问修饰符、常量池、字段描述、方法描述等)、常量、静态变量、即时编译器编译后的代码等数据。

2.在 HotSpot 虚拟机中对象创建过程

  • 对象所需的内存大小在类加载完成后便完全可以确定,为对象分配空间的任务等同于把一块确定大小的内存从 Java 堆中划分出来。有两种方法划分:指针碰撞、本地线程分配缓冲(TLAB)

  • 虚拟机在分配好对象的存储空间后会对对象进行必要的设置,如这个对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的 GC 分代年龄等信息。这些都放在对象的对象头(Object Header)中。

  • 对象的内存布局

    • 对象头

      对象头包括两个部分:

      1.存储对象自身的运行时数据,如 哈希码、GC 年龄分代、锁状态标志、线程持有的锁、偏向线程 ID、偏向时间戳等。

      2.存储类型指针,即对象指向他的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。

    • 实例数据

      这部分是对象真正存储的有效信息,也是程序代码定义的各种类型的字段内容。无论是从父类继承的,还是在子类中定义的。

    • 对齐填充

      这部分主要是用来对齐对象的大小的(8 字节的整数倍),没实际意义。

相关文章

  • Java内存区域与内存溢出异常

    JVM——Java内存区域 链接:Java内存区域[https://segmentfault.com/a/1190...

  • 8. JVM Memory Model and Visibili

    前言:JVM内存模型、Java内存区域、GC分代回收容易搞混。前面讲解了JVM内存区域,它是Java代码编译成.c...

  • JVM系列-JVM内存区域与GC机制

    JVM内存区域 了解Java GC之前,必须先搞清楚JVM中内存区域的划分。 JVM中内存区域大致可分为如上图所示...

  • JVM内存区域与内存溢出

    Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论JVM内...

  • Java内存区域与内存溢出异常

    Java内存区域与内存溢出异常 @(Java虚拟机)[jvm, 内存] [TOC] 运行时数据区域 Java虚拟机...

  • JVM从入门到精通系列(二):JVM内存区域及运行时内存

    JVM内存区域 JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线程共享区域【JAVA ...

  • JAVA运行时内存及垃圾回收

    JAVA 1. Java运行时内存区域 在JAVA运行时的内存区域中,由JVM管理的内存区域分为以下几个模块: 程...

  • JVM内存区域划分

    一、概述 根据《Java虚拟机规范》的描述,JVM所管理的内存区域如下图所示: JVM内存区域主要分为线程私有区域...

  • JVM内存模型

    JVM内存区域 JVM内存区域主要分为线程私有区域【程序计数器,虚拟机栈,本地方法栈】,线程共享区域【JAVA堆,...

  • JMM与可见性

    JMM jvm运行时数据区域 Java 内存区域和内存模型是不一样的东西,内存区域是指 Jvm 运行时将数据分区域...

网友评论

      本文标题:JVM 读书笔记(一)之 java 内存区域

      本文链接:https://www.haomeiwen.com/subject/nxhtwxtx.html