JVM(Java Virtual Machine)java虚拟机。它是一套可以运行java代码的,运行在OS上的虚拟计算机,JVM隔离了底层操作系统,使得java可以不关心具体的底层操作系统,只需要编译成字节码运行在JVM上。JVM再把字节码转换为各个操作系统认识的机器码。进而将java变成了所谓的跨平台语言。
JVM包括了一套字节码指令集、一组寄存器、堆、栈、垃圾回收、一个存储方法域。
总结:java代码编译为.class字节码文件(javac),通过classLoader装在class,执行class,解释执行,编译执行(client compile,server compile)。
1 Java 源文件—->编译器—->字节码文件 2 字节码文件—->JVM—->机器码
JVM允许一个应用并发执行多个线程,hotspot JVM中java线程与原生操作系统线程有直接的映射关系。当线程本地存储、堆栈、缓冲区分配、同步对象、程序计数器等准备好了之后,就会创建一个操作系统原生的线程,操作系统负责调度所有的线程,并将它们分配到可用的CPU上。当原生线程初始化完毕,就会调用java线程的run()方法。当线程结束时,会释放java线程和系统线程等所有资源。
JVM后台主要的线程:
1:虚拟机线程 VM thread:这个线程等待JVM到达安全点操作出现。
2:周期性任务线程 用来调度周期性执行的操作
3:GC线程 这些线程支持JVM中不同的垃圾回收活动
4:编译器线程 讲字节码动态的转化为本地OS能相关的机器码
5:信号分发线程 负责接收发送给JVM的相关线程,并采用适当的方法进行处理
2019.2.26 15:06
JVM内存: