JVM 概述及重点了解

首先我们需要了解几个重要概念

JAVA:一种编程语言,提供简单的API

JDK:提供编程开发工具包,编程语言规范,编译器,解释器等。

JRE:java语言别写出来的代码运行的环境。

JVM:JRE中的核心就是JVM (java虚拟机),JAVA程序运行中JVM中。JVM运行在操作系统的上面,操作系统为JVM提供cpu,内存,网络带宽等。

JMM: JAVA MEMORY MODE 内存模型

一、JVM三大核心

(1)jvm类加载机制 (2) jvm运行时数据区(重点) (3)jvm垃圾回收(重点)

JVM 概述及重点了解_第1张图片

1.1 jvm 类加载机制

将我们写的java文件编译成class文件后,在jvm启动或者类运行时由类加载器将class文件加载到内存中。

1.2jvm 运行时数据区(内存区)

是JVM在运行的时候操作所分配的内存区,包括五个部分:方法区,堆,java栈,本地方法栈,程序计数器。

一个jvm(进程)中可以运行多个线程,线程之间可以共享一些成员变量,绿色的部分(方法区和堆)就是线程间共享的数据,黄色是各个线程私有的,每个线程都具有一个java栈,本地方法栈,程序计数器。各个线程间不能访问的。

1.3 执行引擎:负责执行class文件中的字节码指令。

二. JAVA内存结构图

JVM 概述及重点了解_第2张图片

JAVA内存内存结构主要有三大块:方法区,堆内存,栈内存。

堆内存:是java内存中最大的一块分为年轻代和年老代(如果分成三部分年轻代、年老代,永久代(在有的版本中方法区就是永久带)),其中年轻代又分为:Eden,FromSpace(Survivor1),ToSpace(Survivor2),占比8:1:1

对于一个JVM我们通常给定两个概念:一个堆内存,一个栈内存。

堆内存:线程共享

    堆:年轻代,年老代

   方法区:永久代

栈内存:线程私有

   java栈,本地方法区栈,程序计数器

方法区存储类信息,常量,静态变量等信息,线程共享,为与Java堆区分开,方法区的别名也叫(Non-heap非堆)

二,如何根据参数来控制JVM运行时数据区的大小

JVM 概述及重点了解_第3张图片

 三.参数配置名称

JVM 概述及重点了解_第4张图片

 

 

 

 

 

你可能感兴趣的:(JAVA)