JVM介绍
基础概念
JVM全称:java虚拟机
JVM扮演的角色:翻译官 —— 系统和应用程序沟通的桥梁
简单执行过程:Jvm运行java程序经过编译后产生class文件,让系统识并执行。这就时为什么java能一次编译到处运行的原因。
生命周期
1.一个java程序开启一个JVM进程
2.JVM的线程分两种:
守护线程:默认为JVM原生线程(可配),专为普通线程提供服务
普通线程:一般为应用程序的线程。
3.没有普通线程,进程结束
JVM区域划分
内存空间:存放在方法区的类和常量
JAVA堆:存放实力化对象
JAVA栈:存放对象引用
堆栈区别:
1.存取数据类型:堆是先进先出,栈是先进后出
2.资源回收:堆由gc回收,栈是超出作用域自动释放
JVM回收机制
1.GC执行过程中会让GC所需线程外的所有线程进入等待状态
2.GC只回收堆和方法区的对象
JVM回收原理
内存空间把对象分成 年轻代(分三个区:eden区、两个survivor(存活)区) 、年老代、元空间。当一个对象被创建后,先进入eden区,eden区满了之后,还存活的对象被复制到第一个存活区(第二个区的数据以此类推);当三个区都满了后,将还存活的对象复制到年老代。元空间用于存放静态文件&