`

JVM基本结构

    博客分类:
  • Java
 
阅读更多

Java在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途、创建和销毁的时间,有一些是随虚拟机的启动而创建,随虚拟机的退出而销毁,有些则是与线程一一对应,随线程的开始和结束而创建和销毁。

 

Java虚拟机运行时包含以下几个运行时数据区:



 

程序计数器

程序计数器是线程私有的,在线程创建时创建。可以看作是当前线程所执行的字节码的行号指示器(指向下一条需要执行的字节码指令)。

 

Java虚拟机栈

Java虚拟机栈是线程私有的,随线程的开始和结束而创建和销毁。Java虚拟机栈描述的是 Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就相当于一个栈帧在Java虚拟机栈中入栈到出栈的过程。

 

本地方法栈

本地方法栈是线程私有的,和Java虚拟机栈作用类似,Java虚拟机栈为虚拟机执行Java方法服务,而本地方法栈为虚拟机执行Native方法服务。

 

Java堆

Java堆是可供各个线程共享的运行时内存区域,是供所有类实例和数组对象分配内存的区域。Java堆在虚拟机启动时被创建,存储了垃圾收集器(GC)管理的各种对象,这些对象无法显式销毁。

 

堆内存可以细分为新生代和老年代,其中新生代再细致一点可分为Eden空间、S0空间(From Survivor)、S1空间(To Survivor)。可以通过-Xmx和-Xms控制堆内存大小。

 

方法区

方法区是各个线程共享的内存区域,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码数据等,例如:运行时常量池、字段和方法数据、构造函数和普通方法的字节码,还包括一些在类、实例、接口初始化时用到的特殊方法。

 

其中运行时常量池包含下面几种类型:

  • CONSTANT_Utf8:UTF-8编码的Unicode字符串,tag为1
  • CONSTANT_Integer:int类型的字面值,tag为3
  • CONSTANT_Float:float类型的字面值,tag为4
  • CONSTANT_Long:long类型的字面值,tag为5
  • CONSTANT_Double:double类型的字面值,tag为6
  • CONSTANT_Class:对一个类或接口的符号引用,tag为7
  • CONSTANT_String:String类型字面值的引用,tag为8
  • CONSTANT_Fieldref:对一个字段的符号引用,tag为9
  • CONSTANT_Methodref:对一个类中方法的符号引用,tag为10
  • CONSTANT_InterfaceMethodref:对一个接口中方法的符号引用,tag为11
  • CONSTANT_NameAndType:对一个字段或方法的部分符号引用,tag为12
  • ......(新版本添加了其他一些类型)

 

  • 大小: 35.1 KB
分享到:
评论

相关推荐

    jvm的基本原理及结构

    jvm的基本原理,以及体系结构,对于java的实现有所帮助

    jvm内存基本结构及垃圾回收

    NULL 博文链接:https://chenkangxian.iteye.com/blog/1871050

    深入理解JVM内幕:从基本结构到Java 7新特性

    深入理解JVM内幕 从基本结构到Java 7新特性

    JVM抽象架构​

    JVM抽象架构​(描述jvm基本结构):包括几个模块之间的关系,有实例说明!

    面试-Java基本知识点1

    2.3 equal和==区别3 JVM内存结构Java对象实例化过程中,主要使用到虚拟机栈、Java堆和方法区 3.1 JVM基本结构类加载器classLoad

    深入JVM内核 - 原理、诊断与优化

    在本课程中个,将详细介绍JVM的基本原理、组成以及工作方式,并配合实际案例,介绍相关的调优技巧。 课程大纲: 第一课 初识JVM JVM分类 Java语言规范 JVM规范 介绍JVM的基本知识和发展历史,并介绍了Java语言...

    了解Java虚拟机JVM的基本结构及JVM的内存溢出方式

    主要介绍了Java虚拟机JVM的基本结构及JVM的内存溢出方式,涉及到Java内存分配相关方面的知识,需要的朋友可以参考下

    深入JVM内核—原理、诊断与优化

    资源名称:深入JVM内核—原理、诊断与优化 教程内容:课程简介:第一周初识JVMJVM分类Java语言规范JVM规范介绍JVM的基本知识和发展历史,并介绍了Java语言规范和JVM规范。第二周JVM运行机制简介堆、栈、方法区等JVM...

    JVM虚拟机从入门到实战视频教程.zip

    001-JVM课程导读 002-第一章-JVM课程简介 003-虚拟机概念 004-JVM的定义 005-JVM规范 006-JVM产品 007-JVM发展史上 008-JVM发展史下 009-JVM资料网站 010-JVM整体架构学习路线(1) 010-JVM整体架构学习路线 011-第二...

    JVM基础知识及性能调优.pdf

    介绍jvm的基本结构、重要概念、相关参数、jvm工具、垃圾回收算法、垃圾收集器、jvm常见错误及调优示例等相关内容。

    2020 宋红康 JVM 09 方法区.pptx

    学习 09 方法区, 记录方法区相关知识,重绘图示和 PPT。 文章包括栈、堆和方法区交互、方法区基本概念、方法区的演进、方法区的内部结构、方法区垃圾回收等相关内容。

    MySQL、JVM、RocketMQ、JUC、设计模式、数据结构与算法学习总结.zip

    基本操作:针对每种数据结构,定义了一系列基本的操作,包括但不限于插入、删除、查找、更新、遍历等,并分析这些操作的时间复杂度和空间复杂度。 算法: 算法设计:研究如何将解决问题的步骤形式化为一系列指令,...

    JVM学习笔记

    JVM学习笔记(一)--------基本结构 JVM学习笔记(二)----java代码编译和执行的整个过程 JVM学习笔记(三)---------内存管理和垃圾回收 JVM学习笔记(四)------内存调优

    YJVM—一种运行在嵌入式Linux内核中的Java虚拟机的设计与实现

    本文的主要研究内容及成果包括: 1、作为一种嵌入式操作系统,嵌入式Linux的基本结构和与传统嵌入式操作系统相比的特点和优势。 2、嵌入式Java的传统解决方案和Java操作系统的基本结构。以及他们对于YJVM设计的影响...

    jvm-rs:JVM-RS-Rust上的演示内存安全JVM

    基本思想是仅实现核心JVM,并使用rt.jar (来自OpenJDK)作为其类库。 我的开发环境 Ubuntu 18.04 Java 1.8.0_172 锈1.27.0 获取并构建jvm-rs 确保您的Java版本是1.8.0_172并且已设置JAVA_HOME env git clone ...

    3Java性能优化三.zip

    三,JVM优化 因为JAVA软件总是执行在JVM虚拟机之上。...须要开发者对JVM的执行原理和基本内存结构有一定的了解。如,堆内存的结构,GC的种类等。然后,根据引用程序的特点。设置合理的JVM启动參数。

    4Java性能优化四.zip

    三,JVM优化 因为JAVA软件总是执行在JVM虚拟机之上。...须要开发者对JVM的执行原理和基本内存结构有一定的了解。如,堆内存的结构,GC的种类等。然后,根据引用程序的特点。设置合理的JVM启动參数。

    程序设计结构

    程序的基本语句、程序顺序结构、选择结构、循环结构等的写法

    JVM讲解视频.zip

    JVM内存模型结构 线程栈及栈帧内部结构详解 程序计数器详解 本地方法栈详解 堆详解 JVM启动参数设置 堆内存大小设置 方法区内存大小设置 栈分配内存大小设置 JVM对象创建原理 分配内存过程 ...

    探索Java语言与JVM中的Lambda表达式

    Lambda表达式,这个名字由该项目的专家组选定,描述了一种新的函数式编程结构,这个即将出现在Java SE8中的新特性正被大家急切地等待着。有时你也会听到人们使用诸如闭包,函数直接量,匿名函数,及SAM(Single ...

Global site tag (gtag.js) - Google Analytics