zoukankan      html  css  js  c++  java
  • 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分析工具
  • 相关阅读:
    TLS握手、中断恢复与证书中心的原因
    PROC 文件系统调节参数介绍(netstat -us)
    CPU状态信息us,sy,ni,id,wa,hi,si,st含义
    优化Linux内核参数
    linux内核(kernel)版本号的意义
    ethhdr、ether_header、iphdr、tcphdr、udphdr 结构介绍
    linux下将不同线程绑定到不同core和cpu上——pthread_setaffinity_np
    module_init的加载和释放
    (一)洞悉linux下的Netfilter&iptables:什么是Netfilter?
    netfilter的钩子——数据包在内核态得捕获、修改和转发
  • 原文地址:https://www.cnblogs.com/bzfsdr/p/13581042.html
Copyright © 2011-2022 走看看