美文网首页
深入理解JVM-java内存划分以及对象新建

深入理解JVM-java内存划分以及对象新建

作者: 风起天蓝 | 来源:发表于2017-08-28 22:28 被阅读0次
1. Java内存区域划分

程序计数器

线程私有,程序计数器用来指示当前线程所执行的字节码的行号,是唯一一个没有指
OutOfMemoryError的区域。

虚拟机栈

线程私有,虚拟机栈描述Java方法执行的内存模型,每个方法在运行的时候都会创造一个栈帧,
用于存储局部变量表(存放编译期间已知的各种基本类型和对象引用类型和returnAddress类型,
其中long和double占用两个Slot)操作数栈、动态链接、方法出口等信息,每一个方法调用
到完成过程就是一个栈帧入栈到出栈的过程。
Thrown:StackOverFlowError 和 OutOfMemoryError

本地方法栈

线程私有,和虚拟机栈发挥的作用一样,只不过用来处理Native方法。
Thrown:StackOverFlowError 和 OutOfMemoryError

Java堆

线程共享,存放对象实例,垃圾收集器管理的主要区域。
Thrown:OutOfMemoryError

方法区

线程共享,存储被虚拟机加载的类信息、常量、静态变量、以及及时编译后的代码数据。
在HotSpot虚拟机实现的时候,永久代也用方法区实现,其他虚拟机则不存在永久带的概念。
运行时常量池的实现也在方法区。
Thrown:OutOfMemoryError

直接内存

Throw:OutOfMemoryError
2. 对象

对象的新建

对象新建.png

对象内存布局

-----------------------------------------------------------------------------
   对象自身的运行时数据(hashcode、 |           类型指针(指向它的类元数据的指针)
GC分代年龄、锁状态标识等)          |          不是所有虚拟机都需要保留此指针
-----------------------------------------------------------------------------

对象的访问定位

  1. 使用句柄访问
    在java堆内存中划分出一部分作为句柄池,refernce存放的就是对象的句柄地址。句柄中包含对象实例数据的地址类型数据的地址
句柄访问.png
  1. 使用直接指针访问
    reference存放的就是对象的存储地址,此时对象就需要考虑如何存放如何访问对象类型数据的相关信息
直接指针.png

相关文章

  • 深入理解JVM-java内存划分以及对象新建

    1. Java内存区域划分 程序计数器 虚拟机栈 本地方法栈 Java堆 方法区 直接内存 2. 对象 对象的新建...

  • JVM读书笔记

    深入理解JVM(1) : Java内存区域划分 深入理解JVM(2) : Java堆中对象创建、布局、访问全过程 ...

  • JVM的内存模型

    Java内存区域——堆,栈,方法区等 深入理解java虚拟机(一)虚拟机内存划分 深入理解java虚拟机(十) J...

  • 关于GC之一-JVM内存划分

    JVM内存划分 JVM内存的划分网上已经有一大堆,这里根据自己的理解,做一些记录。(大部分知识来源于深入理解JVM...

  • JVM内存结构

    以下信息摘录自:深入理解JVM的内存结构及GC机制 JVM内存管理 根据JVM规范,JVM把内存区域划分成了以下几...

  • java解惑之jvm内存区域和类加载机制

    前言 本文不会深入原理去讲解,而是通过具体的场景(代码)来理解java的内存区域和类加载机制 java内存区域划分...

  • 安卓技能点

    技术方面: 掌握Java开发,以及对JVM以及Java内存管理,java内存区域与溢出、垃圾回收有较深入的理解; ...

  • iOS 内存管理面试题(内存管理方案)

    内存管理方案 taggedPointer :存储小对象如NSNumber。深入理解Tagged Pointer N...

  • 深入理解 JVM 之 JVM 内存结构

    深入理解 JVM 之 JVM 内存结构 Java 虚拟机在运行 Java 程序 时,把它所管理的内存划分为若干个不...

  • JVM内存分配

    探索堆内存到底是怎么分配 简介:堆内存分配方式,分配规则讲解 Java堆内存区域的划分以及作用讲解 对象分配的规则...

网友评论

      本文标题:深入理解JVM-java内存划分以及对象新建

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