
JVM
文章平均质量分 81
骑着王八环游世界
这个作者很懒,什么都没留下…
展开
-
程序计数器、虚拟机栈详解
内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行,JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨一下经典的JVM内存布局。Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。原创 2021-11-16 15:43:29 · 1258 阅读 · 0 评论 -
双亲委派机制详解
双亲委派机制Java虚拟机对class文件采用的是***按需加载***的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成的class对象。而且加载某个类的class文件时,Java虚拟机采用的是***双亲委派模式***,即把请求交由给父类处理,它是一种任务委派模式。工作原理如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器如果父类加载器可以原创 2021-11-11 14:18:34 · 645 阅读 · 0 评论 -
类加载器详解
类加载器的分类JVM支持两种类型的加载器,分别为***引导类加载器(Bootstrap Class Loader)***和***自定义类加载器(User-Defined Class Loader)***。从概念上来讲,自定义类加载器一般指的是程序中由开发人员自定义的一类加载器,但是Java虚拟机规范却没有这么定义,而是***将所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器***。无论类加载器的类型如何划分,在程序中我们最常见的类加载器始终只有3个,如下所示:publi原创 2021-11-09 16:28:11 · 165 阅读 · 0 评论 -
类加载的过程
类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量或数字常量(这部分常量信息是Class文件中常量池部分的内存映射)类加载器Class Loader角色class file存在于本地硬盘上,可以理解为原创 2021-11-09 13:44:51 · 110 阅读 · 0 评论 -
JVM发展历史
Sun Classic VM早在1996年Java1.0版本的时候,Sun公司发布了一款Sun Classic VM的Java虚拟机,它同时也是世界上第一款商用Java虚拟机,JDK1.4时就完全被淘汰。这款虚拟机内部只提供解释器如果使用JIT编译器,就需要进行外挂。但是一旦使用了JIT编译器,JIT就会接管虚拟机的执行系统。解释器就不再工作。解释器和编译器不能配合工作。现在Hotspot内置了此虚拟机Exact VM为了解决上一个虚拟机的问题,jdk1.2时,sun提供了此虚拟机原创 2021-11-08 14:07:56 · 367 阅读 · 0 评论 -
JVM的基本知识
JVM:跨语言的平台Java虚拟机根本不关注运行在其内部的程序到底是使用何种编程语言编写的,它只关心“字节码”文件。也就是说Java虚拟机拥有语言无关性,并不会单纯地与Java语言“终身绑定”,只要其他编程语言的编译结果满足Java虚拟机的内部指令集、符号表及其其他的辅助信息,它就是一个有效的字节码文件,就能够被虚拟机所识别并装载运行。JVM特点一次编译,到处运行自动内存管理自动垃圾回收功能JVM的位置:JDK和JVM的关系JVM整体结构JVM详细图Java代码的执行流原创 2021-11-05 17:19:31 · 136 阅读 · 0 评论