JVM学习笔记(一、学习目的)
目录:
- 什么是JVM
- 为什么要学习JVM
- 笔记整理
什么是JVM
摘自:https://blog.csdn.net/qq_41701956/article/details/80020103
Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。因此在运行时,Java源程序需要通过编译器编译成为.class文件。
众所周知java.exe是java class文件的执行程序,但实际上java.exe程序只是一个执行的外壳,它会装载jvm.dll(windows下,下皆以windows平台为例,linux下和solaris下其实类似,为:libjvm.so),这个动态连接库才是java虚拟机的实际操作处理所在。
JVM是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。所以,JAVA虚拟机JVM是属于JRE的,而现在我们安装JDK时也附带安装了JRE(当然也可以单独安装JRE)。
为什么要学习JVM
摘自:https://www.cnblogs.com/chanshuyi/p/jvm_serial_00_why_learn_jvm.html
1、学习虚拟机是为线上排查问题打下基础。
- 我们知道我们一个Java应用部署在线上机器上,肯定时不时会出现问题。
- 除去网络、系统本身问题,很多时候 Java 应用出现问题,就是Java虚拟机的内存出现了问题。
- 要么是内存溢出了,要么是GC频繁导致响应慢等等。
2、那如何解决这些问题呢?
- 首先,你必须学会看懂日志吧。
- 那么你就必须要看得懂GC日志,这是 Java 虚拟机内容的一部分。
- 你看懂了GC日志,那么你就得明白什么是年轻代、老年代、永久代、元数据区等,这些就是Java虚拟机的内存模型。
- 你懂了Java虚拟机的内存模型,那你就得知道Java虚拟机是如何进行垃圾回收的,它们使用的垃圾回收算法是怎样的,它们有何优缺点。接下来就是各种垃圾回收器的特性。
你看,这一切东西都是相关联的。你想要解决线上的Java应用崩溃问题,那么你就必须学会GC日志。要看懂GC日志,就必须学习Java虚拟机内存模型。要看懂Java虚拟机内存模型,你就要学会垃圾回收机制等等。