
JVM
文章平均质量分 69
既然头发留不住
学无止境
展开
-
类的加载过程与初始化顺序
类的加载过程1.加载:根据查找路径找到相应的class文件,然后导入。类的加载方式分为隐式加载和显示加载两种。隐式加载指的是程序在使用new关键词创建对象时,会隐式的调用类的加载器把对应的类加载到jvm中。显示加载指的是通过直接调用class.forName()方法来把所需的类加载到jvm中。2. 检查:检查夹加载的class文件的正确性。3.准备;给类中的静态变量分配内存空间。4.解析:虚拟机将常量池中的符号引用替换成直接引用的过程。符号引用就理解为一个标示,而在直接引用直接指向内存中的原创 2021-04-11 23:15:54 · 219 阅读 · 0 评论 -
Java 1.5 1.7 1.8新特性
Java 1.5 新特性转载 2021-04-08 10:14:17 · 333 阅读 · 0 评论 -
GC对象的判定方法
GC对象的判定方法判断一个对象是否存活有两种方法:引用计数法 所谓引用计数法就是给每一个对象设置一个引用计数器,每当有一 个地方引用这个对象时,就将计数器加一,引用失效时,计数器就减一。当一个对象的引用计数器为零时,说明此对象没有被引用, 也就是“死对象”,将会被垃圾回收. 引用计数法有一个缺陷就是无法解决循环引用问题,也就是说当对象 A 引用对象 B,对象 B 又引用者对象 A,那么此时 A、B 对象的引用计数器都不为零,也就造成无法完成垃圾回收,所以主流的虚拟机都没有采用这种算法。可达性原创 2020-07-23 08:41:36 · 717 阅读 · 0 评论 -
JVM的类加载器与类加载过程
JVM02-类加载器类加载器类加载器负责加载class文件,class文件在文件开头有特定的文件标示,将class文件字节码内容加载到内存中,并将这些内存转化成方法区中的运行时数据结构并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定类加载器的种类启动类加载器(BootStrap)是采用C++语言编写,是Java中原生代码实现的加载器,负责加载$JAVA_HOME中jre/lib/rt.jar里所有的class扩展类加载器(原创 2020-07-22 18:23:10 · 186 阅读 · 0 评论 -
JVM的基本架构
JVM01-JVM架构分析JVM架构图:注:灰色为线程私有,独占的,亮色是线程共享的,存在垃圾回收处理。首先Class files是我们编写的.java文件会被编译器编译成.class的字节码文件类加载器子系统负责读取这个字节码文件,并转换成Java.lang.Class类中的一个实例,加载到内存中。方法区存放这实例的主要信息,类似于类的模板,如静态变量,常量,类信息以及运行时常量池。本地方法接口是一个Java调用非Java代码的接口,Java中不提供实现类,具体实现是Java之外实现的,用原创 2020-07-22 13:11:15 · 165 阅读 · 0 评论