
JVM
文章平均质量分 81
努力学习的小飞侠
这个作者很懒,什么都没留下…
展开
-
JVM之垃圾收集思维导图
原创 2024-03-17 21:44:38 · 188 阅读 · 0 评论 -
Java即时编译原理与编译优化
得到,生成机器码前还会有一些包括寄存器分配、窥孔优化等操作。原创 2023-12-22 16:32:56 · 591 阅读 · 0 评论 -
类文件结构
根据 Java 虚拟机规范,Class 文件通过ClassFile定义,有点类似 C 语言的结构体。//Class 文件的标志//Class 的小版本号//Class 的大版本号//常量池的数量//常量池//Class 的访问标记//当前类//父类//接口数量//一个类可以实现多个接口//字段数量//一个类可以有多个字段//方法数量//一个类可以有个多个方法//此类的属性表中的属性数//属性表集合通过分析ClassFile。原创 2023-12-22 15:01:42 · 855 阅读 · 0 评论 -
虚拟机对象的创建
虚拟机在Java堆中对象分配、布局和访问的访问过程。原创 2023-12-22 02:35:56 · 1151 阅读 · 0 评论 -
虚拟机内存区域与内存溢出
Java堆是所有线程共享的一块内存区域,在虚拟机启动时创建,原创 2023-12-22 01:23:34 · 1525 阅读 · 0 评论 -
垃圾回收器和内存分配
概述垃圾回收(Garbage Collection)简称GC,早在Lisp还在胚胎时期时,其作者John McCarthy就思考过垃圾回收需要完成的三件事情:哪些内存需要回收什么时候回收如何回收今天的内存动态分配与内存回收机制已经非常成熟了,都进入了“自动化时代”,那我们为什么还要学习垃圾回收和内存分配呢?当我们需要检查各种内存溢出,内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术进行监控和调节。原创 2023-12-21 19:04:15 · 1027 阅读 · 0 评论 -
双亲委派模型
站在虚拟机角度来看,只存在两种类加载器,一种是启动类加载器(Bootstrap ClassLoader),这个类加载器一般由C++实现,是虚拟机的一部分;另外一种是其他所有类加载器,这些类加载器由Java实现,独立存在于虚拟机外部,并且全部继承自抽象类java.lang.ClassLoader 自JDK 1.2以来,Java一直保持着三层类加载器,双亲委派的类加载架构。 在Java 8及以前版本绝大多数Java程序都会使用以下三个系统提供的类加载器来进行加载1)原创 2023-12-21 13:49:01 · 969 阅读 · 0 评论 -
JVM虚拟机类加载器
Java虚拟机设计团队有意将类加载阶段中的“”这个动作放在虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。实现这个动作的代码称为“原创 2023-12-21 10:42:29 · 359 阅读 · 0 评论 -
虚拟机类加载机制
至此我们已经总结了类的加载机制的大体流程现在来回顾一下,类加载的时机是不确定的,因为类加载的第一步加载这个阶段并没有强制性要求可以交给虚拟机自行把握,但是类加载的顺序是确定的 ,其中加载、验证、准备、初始化、卸载这五个阶段的顺序是确定的,类型的加载必须按部就班的按照这种顺序开始,并且明确了初始化的时机开始类加载的七大阶段有加载将类的Class二进制字节流文件加载进虚拟机的方法区内,一遍后续的操作,直接对方法区的数据结构进行读取验证验证阶段主要是为了保证字节流信息不会危害虚拟机的安全验证主要包括。原创 2023-12-20 21:19:05 · 1010 阅读 · 0 评论 -
JVM学习笔记(二)垃圾回收器和内存分配策略
垃圾回收(Garbage Collection)简称GC,早在Lisp还在胚胎时期时,其作者John McCarthy就思考过垃圾回收需要完成的三件事情:哪些内存需要回收什么时候回收如何回收今天的内存动态分配与内存回收机制已经非常成熟了,都进入了“自动化时代”,那我们为什么还要学习垃圾回收和内存分配呢?当我们需要检查各种内存溢出,内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术进行监控和调节在对象中添加一个引用计数器,每当一个地方引用它时,计数器值就加一;当引用失效原创 2023-09-23 12:46:28 · 182 阅读 · 1 评论 -
JVM学习笔记(一)Java内存区域与内存溢出
每个线程运行时所需要的内存称为虚拟机栈每个栈由多个栈帧组成,对应每次方法调用所需要的内存每一个线程中只有一个活动栈帧,对用着当前执行的方法与Java堆一样,是各个线程共享的内存区域,它用来存储被虚拟机加载的类型信息,常量,静态变量,即时编译器编译后的代码缓存等数据。虽然《Java虚拟机规范》中把方法区描述为堆的一个逻辑部分,但是它有一个别名“非堆”(non-heap),目的是与Java堆区分开来。所以方法区是独立堆的内存空间。原创 2023-09-22 17:23:59 · 157 阅读 · 1 评论