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的主要内容,如果未能解决你的问题,请参考以下文章