美文网首页
JVM 内存介绍

JVM 内存介绍

作者: 真海ice | 来源:发表于2018-02-27 17:14 被阅读0次

和jvm(Java Virtual Machine)相关的内存,一般分为栈区、堆区、方法区(永久区)等。

jvm内存.png

一、栈区

栈区是程序运行时,一个线程的私有空间;

  • 局部变量区:存放该线程运行时的局部变量
  • 操作数栈:局部变量数据声明先进入操作数栈,再压如入局部变量表,需要时再从局部变量表取出
  • 动态链接:全局变量被方法引用时,为了 动态连接使用
  • 方法出口:
    1. 正常退出,执行引擎遇到方法返回的字节码,将返回值传递给调用者
    2. 异常退出,遇到Exception,并且方法未捕捉异常,那么不会有任何返回值。

二、堆区

堆区是和java应用程序关系最密切的内存空间,几乎所有的对象和数组数据都存在其中。

  • 从内存回收角度,Java堆被分为新生代老年代;这样划分的好处是为了更快的回收内存;
    新生代分为eden区、from和to区;
    对大多数情况下,对象首先分配到eden区,在一次新生代回收后(gc),如果对象还存活,就会进入from或者to区;之后每经过一次新生代回收,如果对象还存活则它的年龄就增加1,当对象达到一定的年龄(默认15)后,则进入老年代

  • 从内存分配角度,Java堆可以划分出线程私有的分配缓冲区TLAB(Thread Local Allocation Buffer);这样划分的好处是为了更快的分配内存。

三、方法区

方法区主要存放的是已被虚拟机加载的类信息、常量、静态变量、编译器编译后的代码等数据。GC在该区域出现的比较少;

堆、方法区是线程共享的,在Java虚拟机中只有一个堆、一个方法栈。并在JVM启动的时候就创建,JVM停止才销毁。

相关文章

  • Java开发

    JVM 内存溢出实例 - 实战 JVM(二) 介绍 JVM 内存溢出产生情况分析Java - 注解详解 详细介绍 ...

  • Flink源码阅读(六)--- Flink 内存模型

    本篇文章主要介绍下FLink的内存模型,在介绍Flink内存模型之前,我们首先学习下JVM内存结构 1. JVM内...

  • JVM02——JVM运行时内存

    在上一篇文章中,我们介绍了 JVM 的内存区域,本文我们将继续围绕 JVM 展开话题,介绍 JVM 运行时内存。关...

  • JVM GC 那些事(二)- 堆上的内存分配机制

    前一篇文章JVM GC 那些事(一)- JVM 运行时内存划分介绍了 JVM 运行时的内存划分情况。本文将介绍 J...

  • JVM 内存介绍

    和jvm(Java Virtual Machine)相关的内存,一般分为栈区、堆区、方法区(永久区)等。 一、栈区...

  • JVM内存介绍

    Java虚拟机所管理的内存将会包括以下几个运行时数据区域: 方法区(Method Area)、虚拟机栈(VM St...

  • Java 内存基础知识

    主要介绍 Java 内存相关的基础知识,为 LeakCanary 原理分析做准备。 JVM 内存结构 JVM 在运...

  • Java基础之内存模型

    Java基础之内存模型 目录 Java内存模型简单介绍 JVM介绍 存储方式 并发原因 Java内存模型与系统内存...

  • JVM内存管理系列总结

    JVM内存管理系列主要包含了一下几篇文章: 1.JVM内存区域介绍以及内存溢出示例 2.JVM垃圾回收前奏-对象已...

  • JVM:性能调优

    JVM内存模型,垃圾回收算法介绍 根据Java虚拟机规范,JVM将内存划分为: -- 年轻代(New) :年轻代用...

网友评论

      本文标题:JVM 内存介绍

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