文章目录

  • 前言
  • 一、类的生命周期
  • 二、类加载原理
    • 1、类加载的过程
    • 2、代码示例
  • 三、双亲委派原理
    • 1、原理图
    • 2、双亲委派的优点
  • 四、Tomcat类加载机制
  • 总结

前言

学习JVM,首先需要了解类的生命周期?以及类加载原理?并且需要扩展知识点,明白什么是双亲委派?如何打破双亲委派?最常见的Web容器Tomcat中的JVM是如何工作的?

一、类的生命周期

编译 -> 加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 ->卸载

二、类加载原理

1、类加载的过程

2、代码示例

public class Kafka {public static void main(String[] args) {ReplicaManager replicaManager = new ReplicaManager();replicaManager.loadReplicasFromDisk();}
}
public class ReplicaManager {public static String flushInterval = "hello world";public static Map<String, ReplicaManager> replicaManagerMap;static {replicaManagerMap = new HashMap<>(16);}public void loadReplicasFromDisk() {Boolean hasFinishedLoad = false;if (isLocalDataCorrupt()) {}}public Boolean isLocalDataCorrupt() {Boolean isCorrupt = false;return isCorrupt;}
}

三、双亲委派原理

1、原理图

2、双亲委派的优点

安全性:若有人恶意篡改系统级别类,如:String.java,则不可能实现,因为该类在BootstrapClassLoader已加载过了;
一致性:若父类加载器已加载过,子类则不会重复加载,保证同一个类只被加载一次(通过ClassLoader+类全限定名来保证)

四、Tomcat类加载机制

总结

1、Tomcat如何打破双亲委派机制:Thread.currentThread().setContextClassLoader(this.catalinaLoader)。默认情况下,Thread上下文加载器继承至父线程,也就是说所有线程默认上下文加载器都与第一个启动线程相同,即main线程,它的上下文加载器是AppCLassLoader。
2、JasperClassLoader只负责加载由JSP编译后生成的类。
3、每个应用都有自己的WebappClassLoader,各个WebappClassLoader实例之间相互隔离,且加载路径中的Class只对当前webapp可见,对Tomcat和其他Web应用程序不可见。

第1篇:JVM运行原理相关推荐

  1. 十年架构师详解JVM运行原理

    做Java开发的几乎都知JVM这个名词,但是由于JVM对实际的简单开发的来说关联的还是不多,一般工作个一两年(当然不包括爱学习的及专门做性能优化的什么的),很少有人能很好的去学习及理解什么是JVM,以 ...

  2. 为什么jvm要分为堆、方法区等?原理是什么?_「JVM」知识点详解一:JVM运行原理详解...

    前言 JVM 一直都是面试的必考点,大家都知道,但是要把它搞清楚又好像不是特别容易.JVM 的知识点太散,不系统,今天带大家详细的了解一下jvm的运行原理. 正文 1 什么是JVM? JVM是Java ...

  3. java jvm原理_JAVA和JVM运行原理

    JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器.它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序. 编译器负责把Java ...

  4. 23.多线程(进程的概述和多进程的意义,线程的概述和多线程的意义,JVM运行原理以及JVM启动的线程探讨,实现多线程 线程调度,线程控制,Lock锁,死锁现象)

    1.进程概述及多进程的意义 1.线程和进程     要想说线程,首先必须得聊聊进程,因为线程是依赖于进程存在的. 2.进程概述     什么是进程呢?通过任务管理器我们就可以看到进程的存在.      ...

  5. 深入理解JVM运行原理(一)

    一.JVM的运行机制 JVM是用于运行Java字节码的虚拟机,包括一套字节码指令集.一组程序寄存器.一个虚拟机栈.一个虚拟机堆.一个方法区和一个垃圾回收器.JVM运行在操作系统之上,不与硬件设备直接交 ...

  6. JVM运行原理及优化之 jstat -gc

    我们写好的代码,是要通过JVM才能运行的 JVM 想要执行一个类,首先要加载类,在加载类之前,需要先编译成字节码class 文件 然后就执行类的加载过程,JVM 加载类的话,需要类加载器 类加载器是分 ...

  7. java 底层运行_从表面到底层丨Java和JVM的运行原理,现在带给你

    Java,编程语言,被创造于90年代初,在经历了这么多年的风风雨雨,Java已经成长为世界第一的编程语言,根据往期以及目前的数据来看,Java的使用频率为全球第一,即使偶尔会有第二第三的情况,但是这依 ...

  8. java能够运行的原理_JAVA程序运行原理分析(一)

    作为JAVA的开发人员,需要知道JAVA是如何运行的,这个需要好好思考下. (一)class文件内容 class文件包含JAVA程序执行的字节码,也就是说程序的执行是通过class里面的内容进行执行的 ...

  9. Java程序的运行原理及JVM的启动是多线程的吗?

    Java程序的运行原理及JVM的启动是多线程的吗? A:Java程序的运行原理 Java通过java命令会启动java虚拟机.启动JVM,等于启动了一个应用程序,也就是启动了一个进程. 该进程会自动启 ...

最新文章

  1. 23 种设计模式实战 pdf(很全)
  2. Linux下svn搭建配置流程
  3. react-native调用安卓原生,如果调用没有参数的方法会报错,会提示没有加入参数.
  4. java 格式化输出
  5. python基础19 -------面向对象终结篇(介绍python对象中各种内置命令)
  6. 老师,对不起,我古诗背串了...
  7. 看 设计模式之策略模式探讨初步 有感,并摘取部份内容,学习之
  8. RemoveDirectory 功能:删除文件夹
  9. centos系统安全设置
  10. 阶段3 1.Mybatis_07.Mybatis的连接池及事务_1 今日课程内容介绍
  11. minecraft java_minecraft java版本下载
  12. Java的jdk安装与环境变量配置
  13. #define c# 报错_天轰穿C#教程之#define和#undef【原创】
  14. 2022年黑龙江二级建造师公路工程《公路隧道工程》精选题及答案
  15. 有哪些资本运作的经典案例?
  16. 基于GoLang的MMO游戏服务器(二)
  17. 团队管理的四大挑战——留人篇
  18. cxf webservice接口
  19. pandas之用loc、iloc、ix进行索引以及切片
  20. 前端面试自我介绍的技巧都有哪些?

热门文章

  1. 户口迁移证,报到证和毕业证
  2. DenseNet简介
  3. Android ORM框架 GreenDao 的使用详解
  4. English Alphabet(IT 英语字母表),大家来猜猜看吧!
  5. 微博的未来 (Twitter创始人Evan Williams介绍新网站Medium)
  6. 【北京】安全研究员/工程师-20-35K,人体工程学座椅坐等你来~
  7. MATLAB中MOD函数
  8. android菊花动画,Android仿ios加载时菊花图
  9. 请问一下用xpath提取信息时,遇到网页文本中有br标签,提取不到br标签后的内容怎么处理呢
  10. 这款浏览器今天停止更新,想必很多人都用过,盘点各大浏览器优劣,科普一些干货