JVM集合-JVM整体结构(内存结构)

我们先来看一下JVM的整体架构图:

 

该图就是JVM的整体架构图,现在来讲解一下每一个部分的功能是做什么的:

1:class file就是我们虚拟机编译出来的字节码文件,这里不详细说

2:类装载子系统: (后文会配上图文解说类加载子系统的各个阶段:加载阶段、链接阶段、初始化阶段--》传送门

    1).类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。
    2).ClassLoader只负责class文件的加载,至于它是否可以运行,则由ExecutionEngine决定。

3:方法区(永久代)--》传送门:线程共享,存储已经被虚拟机加载的类信息、常量、静态变量

4:堆(是jvm中最大的一块由年轻代和老年代组成):主要用于方法的执行

     这里拓展一下堆的参数设置(主要用于jvm参数调优,后面会有专门的文章介绍--》传送门) 

    堆内存的设置:

    -Xms:设置堆的最小空间大小

    -Xmx:设置堆的最大空间大小

    -XX:NewSize 设置新生代最小空间大小

    -XX:MaxNewSize:设置新生代最大空间大小

    -XX:PermSize 设置永久代最小空间大小

    -XX:MaxPermSize 设置永久代最大空间大小

   -Xss 设置每个线程的堆栈大小

   没有直接设置老年代的参数,但是可以设置堆空间大小和新生代空间大小两个参数来间接控 制:老年代空间大小=堆空间大小-年轻代大空间大小

5:java栈(垃圾收集器管理的主要区域(GC堆)):

  • 局部变量表-存储方法参数,内部使用的变量
  • 操作数栈-在变量进行存储时,需要进行入栈和出栈
  • 动态连接-引用类型的指针
  • 方法出口-方法的返回

6:本地方法栈

 

7:程序计数器:(作用:决定执行下一行代码)

     举个例子:代码是一条一条的往下执行的,这个时候就是程序计数器;JVM就是通过读取程序计数器的值来决定下一条需要执行的字节码指令,进而进行选择语句、循环、异常处理等

8:执行引擎(会有转门一片内容讲解--》传送门 ):代码正真执行的地方

9:本地方法接口:融合不同的编程语言为java所用

10:本地方法库:本质就是为了融合非JAVA

原文地址:https://www.cnblogs.com/qq1141100952com/p/14985144.html