美文网首页
Java虚拟机运行时内存

Java虚拟机运行时内存

作者: 待我所待 | 来源:发表于2021-12-07 15:32 被阅读0次

运行时数据区域

1.程序计数器:较小内存空间,字节码行号指示器(每个线程独立分配,线程私有)

2.Java虚拟机栈:方法运行时在虚拟机栈上创建栈帧(存储局部变量表、操作数栈、动态连接、方法出口等信息),方法执行前后相当于在栈帧在栈上的进站出站操作(生命周期同线程、线程私有),“堆栈信息”中的“栈”通常代表局部变量表。

3.本地方法栈:结构同Java虚拟机栈,作用范围不同,Java虚拟机栈针对虚拟机执行Java方法、本能方法针对native方法。

4.Java堆:虚拟机内存管理中最大的一部分(线程共享),虚拟机启动时创建,几乎所有对象实例都在堆内分配(逻辑上连续的内存空间)

5.方法区:存储被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据(非永久代回收方案)

补充:

1.局部变量表:

存放编译期可知的各种Java基本类型(boolean、byte、cahr、short、int、float、long、double)、对象引用(reference类型、可能时指对象起始地址的指针,也可能是代表对象的句柄或者其他能代表对象位置的信息)和returnAddress类型(指向一条字节码指令的地址)。

局部变量表中存储空间以局部变量槽(slot)表示,除long和double占用两个slot外、其余类型均占用一个slot。

2.运行时常量池

方法区的一部分,Class文件中有常量池表,用于存放编译期生成的各种字面量和符号引用,这部分内容存在方法去的运行常量池中。Class中符号引用翻译出的直接引用也会放在常量池中,常量池内数据具备动态性,非只有在编译期才能产生。

3.直接内存

由NIO引入,Channel使用的Buffer,可以直接使用Native函数库直接分配堆外内存,然后通过DirectByteBuffer对象作为这块内存的引用来使用,不受-Xmx等参数管控。

相关文章

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

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

  • Java运行时数据区

    Java内存模型 Java内存模型,就是Java程序运行时的内存模型。而Java代码是在Java虚拟机上运行的,由...

  • Java并发编程 Java内存模型

    JVM内存结构 VS Java内存模型 VS Java对象模型 整体方向 JVM内存结构,和Java虚拟机的运行时...

  • java - 内存管理

    java内存管理 参考文章:Java内存管理:深入Java内存区域 1. 运行时数据区域 Java虚拟机在执行Ja...

  • JVM入门

    Java虚拟机内存包括: 程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区、运行时常量池、直接内存。 ...

  • JVM读书笔记--java内存区域划分

    JVM--java内存区域划分 Java虚拟机所管理的内存包括以下几个运行时数据: 程序计数器 java虚拟机栈 ...

  • JVM内存模型学习

    内存划分 java虚拟机按照运行时内存使用区域划分如图: 一、线程私有区 虚拟机栈1、虚拟机栈描述的是Java方法...

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

    Java内存区域与内存溢出异常 1. 运行时数据区域 《Java虚拟机规范(Java SE 7)》规定,Java虚...

  • 深入理解Java虚拟机(一)

    自动内存管理机智 1. Java内存区域与内存溢出异常 运行时的数据区域 根据《Java虚拟机规范(Java SE...

  • Java虚拟机基础——2JVM运行时数据区

    Java虚拟机整体篇幅如下: Java虚拟机基础——1Java的内存模型Java虚拟机基础——2JVM运行时数据区...

网友评论

      本文标题:Java虚拟机运行时内存

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