`
youyu4
  • 浏览: 435358 次
社区版块
存档分类
最新评论

JVM之结构

 
阅读更多

JVM之结构

 

 

JVM的运行流程



 

 

 

JVM的结构图如下:



 

 

 

类加载器

 

类加载器子系统负责加载编译好的.class字节码文件,并装入内存,使JVM可以实例化或以其它方式使用加载后的类。

 

 

 

程序计数器

 

记录当前线程执行到哪一行,每个线程有一个程序计数器和一个虚拟机栈;如果执行本地方法,程序计数器为空,这部分我们不需要深入研究。

 

 

 

虚拟机栈

 

虚拟机栈是线程私有的,每个线程创建的同时都会创建JVM栈,JVM栈中存放的为当前线程中局部基本类型的变量(java中定义的八种基本类型:boolean、char、byte、short、int、long、float、double)、部分的返回结果以及Stack Frame,非基本类型的对象在JVM栈上仅存放一个指向堆上的地址。

 

 

 

 

它是JVM用来存储对象实例以及数组值的区域,可以认为Java中所有通过new创建的对象的内存都在此分配,因为对象都存在这里,所以也是线程共享的,Heap中的对象的内存需要等待GC进行回收。

 

 

 

方法区

 

用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译后的代码等信息。

 

方法区是线程间共享的,当两个线程同时需要加载一个类型时,只有一个类会请求ClassLoader加载,另一个线程会等待。

 

 

 

本地方法栈

 

JVM采用本地方法栈来支持native方法的执行,此区域用于存储每个native方法调用的状态。这部分也不需要我们深入学习。

 

 

 

了解JVM的运行流程

 

代码

public class Demo01 {
    public static void main(String[] args) {
        A a = new A();
        System.out.println(a.width);
    }
}

class A{
    public static int width=100; //静态变量,静态域 field
    static{
        System.out.println("静态初始化类A");
        width = 300 ;
    }
    public A() {
        System.out.println("创建A类的对象");
    }
}

  

分析



 

说明

这里主要根据虚拟机栈、堆、方法区,进行说明

 

    1. JVM加载Demo01时候,首先在方法区中形成Demo01类对应静态数据(类变量、类方法、代码…),同时在堆里面也会形成java.lang.Class对象(反射对象),代表Demo01类,通过对象可以访问到类二进制结构。然后加载变量A类信息,同时也会在堆里面形成a对象,代表A类。

 

    2. main方法执行时会在栈里面形成main方法栈帧,一个方法对应一个栈帧。如果main方法调用了别的方法,会在栈里面挨个往里压,main方法里面有个局部变量A类型的a,一开始a值为null,通过new调用类A的构造器,栈里面生成A()方法同时堆里面生成A对象,然后把A对象地址付给栈中的a,此时a拥有A对象地址。

 

    3. 当调用A.width时,调用方法区数据。

  • 大小: 27.2 KB
  • 大小: 87.4 KB
  • 大小: 127.5 KB
分享到:
评论

相关推荐

    JVM内存结构.pdf

    ### JVM内存结构详解 #### 一、概述 Java虚拟机(JVM)作为Java程序的运行环境,其核心组件之一便是内存管理系统。理解JVM的内存布局对于开发高性能的应用程序至关重要。本文将详细介绍JVM内存结构及其各个组成部分...

    JVM 内存结构及配置总结

    Java虚拟机(JVM)内存结构与配置是Java开发者必须理解的重要概念,它涉及到程序的运行效率和稳定性。本文将详细解析JVM的内存结构、内存分配策略以及相关的配置参数。 1. **JVM内存结构** JVM内存主要分为以下几...

    解析JVM内存结构和6大区域

    JVM 是 Java虚拟机,它是 Java 语言的核心组件之一,为 Java 程序提供了运行环境。JVM 的内存结构是 Java 程序的基础,它的设计和实现对 Java 程序的性能和可靠性产生了深远的影响。 JVM 的内存结构可以分为 6 个...

    小菜鸟系列-JVM体系结构

    **小菜鸟系列-JVM体系结构** Java虚拟机(JVM)是Java平台的核心组成部分,它为Java程序提供了跨平台的运行环境。理解JVM的体系结构对于优化代码性能、排查故障以及深入理解Java编程至关重要。在本文中,我们将探讨...

    JVM面试资料:JVM结构、JVM调优、四大垃圾回收算法、七大垃圾回收器

    JVM结构:类加载器,执行引擎,本地方法接口,本地内存结构; 四大垃圾回收算法:复制算法、标记-清除算法、标记-整理算法、分代收集算法 七大垃圾回收器:Serial、Serial Old、ParNew、CMS、Parallel、Parallel Old...

    JVM体系结构与GC调优

    JVM体系结构与GC调优相关介绍,包含JVM体系结构、常用GC算法、内存管理、垃圾回收器、虚拟机调优、相关监控工具等

    JVM内存结构-JVM体系结构 程序计数器 虚拟机栈 本地方法栈 堆 方法区

    JVM内存结构-JVM体系结构 程序计数器 虚拟机栈 本地方法栈 堆 方法区

    JVM体系结构与GC调优.pdf

    jvm体系结构与GC调优,图文齐飞,方便理解,,非常适合入门的java工程师以及性能测试工程师阅读,欢迎大家下载

    Jvm性能优化-JVM内存结构原理分析03

    "Jvm性能优化-JVM内存结构原理分析03" Jvm性能优化是Java虚拟机(JVM)中非常重要的一部分,它对Jvm的性能产生了很大的影响。本文将从Jvm内存结构的角度来分析Jvm性能优化的原理。 Jvm内存结构主要分为五部分:堆...

    jvm的基本原理及结构

    ### JVM基本原理及结构详解 #### 一、Java虚拟机(JVM)的逻辑与物理结构 ...总之,JVM的复杂结构和高效性能使其成为现代软件开发中的关键技术之一,深入理解JVM的工作原理对于优化Java程序的性能和资源管理至关重要。

    (46页完整版)JVM体系结构与GC调优.zip

    46页PPT详解JVM,46页PPT详解JVM,46页PPT详解JVM,46页PPT详解JVM,46页PPT详解JVM,46页PPT详解JVM,46页PPT详解JVM,46页PPT详解JVM,46页PPT详解JVM,46页PPT详解JVM,46页PPT详解JVM,46页PPT详解JVM,46页PPT...

    JVM系统结构.docx

    每当一个Java程序启动,就会创建一个新的JVM实例,程序结束后,这个实例也随之消失。 Java字节码是Java程序执行的基础,是一种平台无关的二进制格式,通常以Class文件形式存储。Class文件包含了类和接口的定义,...

    java jvm内存结构 调优

    java jvm内存结构 调优

    JVM内存结构

    写的不够详细,有错误的地方还望各位朋友指出,谢谢

    JVM内存结构.zip

    JVM内存结构的理解对于优化Java程序性能、避免内存溢出等问题至关重要。以下是对JVM内存结构的详细阐述: 1. **堆内存(Heap)** 堆内存是Java程序中最大的一块内存区域,用于存储对象实例。所有通过`new`关键字...

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

    **JVM内存基本结构** Java虚拟机(JVM)是Java程序运行的平台,它提供了内存管理、类加载、字节码执行等核心功能。JVM的内存结构主要分为以下几个区域: 1. **堆(Heap)**:这是JVM中最大的一块内存区域,用于...

    JVM体系结构与GC调优PPT

    JVM体系结构与GC调优,内容涉及JVM的垃圾回收的各种策略和JVM的各种内存的结构的分配

Global site tag (gtag.js) - Google Analytics