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虚拟机内存模型,你就要学会垃圾回收机制等等。

笔记整理

  1. Class文件结构
  2. 类加载机制
  3. 类加载器
  4. 运行时数据区
  5. 字节码执行引擎
  6. GC基础知识
  7. GC算法
  8. GC回收器
  9. GC回收机制
  10. JDK分析工具
原文地址:https://www.cnblogs.com/bzfsdr/p/13581042.html