JVM

Posted yutb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM相关的知识,希望对你有一定的参考价值。

JVM(Java Virtual Machine,Java虚拟机)是一个虚构出来的计算机,通过在真实的计算机上模拟各种计算机功能。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java编译器生成的字节码文件,可以在多种平台上不加修改地运行。

Java代码编译运行过程:Java源码文件(.java)-> Java编译器 -> 字节码文件(.class)-> JVM  -> OS 运行。

1. JVM体系结构

类装载器子系统:用来装载 .class 字节码文件。

运行时数据区:方法区、Java堆、Java栈、本地方法栈和程序计数器。

执行引擎:执行字节码或本地方法。

本地方法接口:

垃圾回收器:

方法区被所有线程共享,用于存放被JVM加载的类信息,常量,静态变量等数据。

Java堆被所有线程共享,用于存放对象实例。堆是GC的主要区域,通常分为新生代和老年代。新生代又分为Eden区和两个Survivor区。Eden区主要放新创建对象,From survivor 和 To survivor 保存GC后幸存下的对象,默认情况下占比 8:1:1。会发生OutOfMemoneyError异常。

Java栈是线程私有的,生命周期与线程相同。每个方法执行都会创建一个栈帧,用于存放局部变量表,操作栈,动态链接,方法出口等。每个方法从被调用,直到被执行完。对应着一个栈帧在虚拟机中从入栈到出栈的过程。

JVM实例和JVM执行引擎实例

(1)JVM实例对应一个独立运行的java程序,它是进程级别的。

(2)JVM执行引擎实例则对应了用户运行程序的线程,它是线程级别的。

 

常用的JVM内存调试工具?

jconsole:JDK自带的调试工具;

jvisualvm:监控内存泄露,跟踪垃圾回收、执行时内存、cpu分析、线程分析。

以上是关于JVM的主要内容,如果未能解决你的问题,请参考以下文章

jvm基础--JVM参数配置

jvm基础--JVM内存模型

jvm基础--JVM内存模型

JVM基础:深入学习JVM堆与JVM栈(转)

JVM堆与JVM栈

JVM内存管理和JVM垃圾回收机制