探秘JVM的底层奥秘
JVM的简单运行流程:主要将字节码文件加载到JVM的内存中,负责跨平台解释字节码文件到不同的操作系统。
JVM的基本结构:
类加载器、执行引擎、运行时数据区域、本地接口
类的装载
加载、连接(验证、准备、解析)、初始化、使用、卸载
class 保存类的定义和结构 保存在堆中
初始化:执行类的构造器(clinit),为类的静态变量赋予正确的初始值。
构造器:
1.static的变量
2.static{语句}
构造方法:实例化对象
类加载器双亲委派模型
为什么要使用?
避免重复加载。
Jdk已有加载器
Bootstrap ClassLoader jvm的启动加载器 c++编写的内核中看不到 启动类加载器 是下面的父类 主要加载 rt.jar 它的父类为null
Extension ClassLoader extend classLoder java编写的 扩展类加载器 是下面的父类 %JAVA_HOME/lib/ext/*.jar%
App ClassLoader extend classLoder java编写的 系统类加载器 ClassPATH
自定义加载器 extend classLoder 自定义路径
探秘JVM的底层奥秘的更多相关文章
- 探索JVM底层奥秘ClassLoader源码分析
1.JVM基本结构: *.java--------javac编译------>*.class-----ClassLoad加载---->运行时数据区------->执行引擎,接口库-- ...
- JVM的底层实现原理
JVM是Java程序运行的环境,但是他同时也是一个操作系统的一个应用程序的一个进程,因此JVM也有他自己的运行生命周期,也有自己的代码和数据空间. JDK JDK在Java的整个体系中充当一个生产加工 ...
- Redis专题(2):Redis数据结构底层探秘
前言 上篇文章Redis闲谈(1):构建知识图谱介绍了redis的基本概念.优缺点以及它的内存淘汰机制,相信大家对redis有了初步的认识.互联网的很多应用场景都有着Redis的身影,它能做的事情远远 ...
- 探秘 Java 热部署二(Java agent premain)
# 前言 在前文 探秘 Java 热部署 中,我们通过在死循环中重复加载 ClassLoader 和 Class 文件实现了热部署的功能,但我们也指出了缺点-----不够灵活.需要手动修改文件等操作. ...
- JVM 必备指南
简介 Java虚拟机(JVM)是Java应用的运行环境,从一般意义上来讲,JVM是通过规范来定义的一个虚拟的计算机,被设计用来解释执行从Java源码编译而来的字节码.更通俗地说,JVM是指对这个规范的 ...
- JVM必备指南(转)
本文由 ImportNew - xiafei 翻译自 anturis.欢迎加入翻译小组.转载请见文末要求. 简介 Java虚拟机(JVM)是Java应用的运行环境,从一般意义上来讲,JVM是通过规范来 ...
- 【java虚拟机系列】java虚拟机系列之JVM总述
我们知道java之所以能够快速崛起一个重要的原因就是其跨平台性,而跨平台就是通过java虚拟机来完成的,java虚拟机属于java底层的知识范畴,即使你不了解也不会影响绝大部分人从事的java应用层的 ...
- 十问 JVM
今天我们来讨论下 Java 虚拟机,通过一系列常见的问题来逐渐深入了解 JVM 创建对象过程,内存布局,类加载以及 GC 回收算法等机制. 十问 JVM 问题整理: Java虚拟机创建对象的过程 (使 ...
- java之JVM(一)
内存模型: Java内存模型建立在自动内存管理的概念之上.当一个对象不再被一个应用所引用,垃圾回收器就会回收它,从而释放相应的内存. JVM从底层操作系统中分配内存,并将它们分为以下几个区域: 方法区 ...
随机推荐
- C++ vector初始化方式
C++的初始化方法很多,各种初始化方法有一些不同. (1): vector<int> ilist1; 默认初始化,vector为空, size为0,表明容器中没有元素,而且 capacit ...
- ORB-SLAM2初步
一.ORB-SLAM简介 最近开始入坑SLAM,经过简单调研,各位大咖认为,目前最优秀的视觉SLAM系统是ORB-SLAM2,因此对ORB-SLAM2进行了学习. ORB-SLAM2是2015年提出的 ...
- docker的一些常用操作
镜像:一个打包好的应用,还有应用运行的系统.资源.配置等容器:镜像的实例,一个镜像可以有一个或多个实例(容器)对docker容器的变更时写到容器的文件系统的,而不是写到docker镜像中的,可以用一个 ...
- MySQL实战45讲学习笔记:第八讲
一.今日内容概要 我在第 3 篇文章和你讲事务隔离级别的时候提到过,如果是可重复读隔离级别,事务 T 启动的时候会创建一个视图 read-view,之后事务 T 执行期间,即使有其他事务修改了数据,事 ...
- [LeetCode] 847. Shortest Path Visiting All Nodes 访问所有结点的最短路径
An undirected, connected graph of N nodes (labeled 0, 1, 2, ..., N-1) is given as graph. graph.lengt ...
- [LeetCode] 24. Swap Nodes in Pairs 成对交换节点
Given a linked list, swap every two adjacent nodes and return its head. You may not modify the value ...
- shell脚本特殊变量($0、$1、$2、 $?、 $# 、$@、 $*)
$0 Shell本身的文件名$1-$n 添加到Shell的各参数值.$1是第1参数.$2是第2参数…$$ Shell本身的PID(ProcessID) $! ...
- 挂载ESP(EFI)分区到Windows,并让资源管理器有权限读写
如果你的磁盘精灵经常原地自爆,但你又想读写ESP分区的文件,那么请看此贴 1 //例子如下 diskpart //运行Diskpart工具 list disk //列出所有磁盘 sel disk // ...
- TextView实现文字水平滚动效果
有时候我们使用TextView显示文本,只想把所有内容用一行显示出来,但是一行又显示不完,就需要让文本实现水平滚动的效果. 具体实现方法如下: 1,实现自定义TextView并实现isFocused( ...
- SpringBoot集成Spring Security(1)——入门程序
因为项目需要,第一次接触 Spring Security,早就听闻 Spring Security 功能强大但上手困难,学习了几天出入门道,特整理这篇文章希望能让后来者少踩一点坑(本文附带实例程序,请 ...