JVM基础学习与回顾

本文介绍了JVM的基础知识,包括字节码的作用、Java跨平台运行原理、JVM的整体结构及各组成部分,如类加载子系统、方法区、解释器与JIT编译器、堆、Java方法栈、本地方法栈和程序计数器。此外,还探讨了类加载器的分类、双亲委派机制、Tomcat自定义类加载器的原因,以及程序计数器的功能。文章详细阐述了虚拟机栈(包括栈帧、局部变量表和操作数栈)、本地方法栈和堆区的运作,特别是对象分配、垃圾回收(包括标记-清除、复制和标记-整理算法)以及分代收集策略。最后,文章提到了Stop-the-world现象及其在垃圾回收中的影响,以及如何通过选择合适的垃圾收集器来优化性能。
摘要由CSDN通过智能技术生成

1、什么是字节码文件?

字节码文件是java文件编译后的文件,.Java文件经过javac编译就是字节码文件

2、字节码文件有什么作用?**

可以提高Java的运行速率

将java代码先进行编译成字节码文件再通过JVM运行会节省时间,如果直接使用JVM进行运行Java文件会很慢很慢

3、Java为什么可以跨平台运行?

每个操作系统中都安装着不同版本的JVM(无论是Linux、Windows、Mac OS)

如果可以将别的语言也编译成字节码文件,这个语言也支持跨平台运行

4、JVM整体结构:

类加载子系统:编译后的字节码文件在磁盘中,类加载子系统可以将字节码文件从磁盘加载到内存空间中

方法区:方法区中存放的类的各种信息

解释器:执行字节码指令,翻译成机器指令,对于热点指令每次都需要重新翻译,效率很低,于是有了JIT编译器

JIT编译器:将字节码指令编译成机器指令,缓存起来,从而提高执行效率(只会处理一些热点指令,也就是经常使用的指令)

堆:执行字节码指令的时候,产生的Java对象,就放在堆中

Java方法栈:在执行某个方法的时候,这个方法的参数和一些列信息都会存进入Java方法栈中(执行的是Java方法)

本地方法栈:存放本地方法执行的相关信息(执行的是本地方法)

程序计数器:在执行指令的时候,可能会切换线程,作用就是记录下一条需要执行的指令的地址,方便找到

5、类加载器的分类

作用:通过javac将.java文件编译成.class字节码文件后,将.class加载到JVM中运行

引导类加载器:BootStrapClassLoader

自定义类加载器:编写一个java类,继承实现ClassLoader类(ExtClassLoader、AppClassLoader、CustomClassLoader)

6、双亲委派

定义:双亲委派机制是当类加载器需要加载某一个.class字节码文件时,则首先会把这个任务委托给他的上级类加载器,递归这个操作,如果上级没有加载该.class文件,自己才会去加载这个.class。

作用:避免类的重复加载,防止核心API被纂改

7、Tomcat为什么要自定义类加载器?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值