JVM
文章平均质量分 72
Albert_GW
追寻轮子制造之光
展开
-
Java 类加载过程
Java 类加载过程1. 加载加载是类加载的第一个过程,在这个阶段,将完成一下三件事情:• 通过一个类的全限定名获取该类的二进制流。• 将该二进制流中的静态存储结构转化为方法去运行时数据结构。• 在内存中生成该类的 Class 对象,作为该类的数据访问入口。2. 验证验证的目的是为了确保 Class 文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成以下四种验证:• 文件格式验证:验证字节流是否符合 Class 文件的规范,如主次版本号是否在当前虚拟机范围内,常量池中的常量是否有不被支持原创 2021-05-06 13:52:36 · 103 阅读 · 0 评论 -
JVM类加载器
JVM类加载器1、概述实现通过类的权限定位获取该类的二进制字节流的代码块叫做类加载器。 类加载器负责加载所有的类,其为所有被载入内存中的类生成一个java.lang.Class实例对象。一旦一个类被加载如JVM中,同一个类就不会被再次载入了。正如一个对象有一个唯一的标识一样,一个载入JVM的类也有一个唯一的标识。在Java中,一个类用其全限定类名(包括包名和类名)作为标识;但在JVM中,一个类用其全限定类名和其类加载器作为其唯一标识。例如,如果在pg的包中有一个名为Person的类,被类加载器Class原创 2021-05-06 13:47:46 · 88 阅读 · 0 评论 -
初识10种垃圾收集器
初识10种垃圾回收器上接:GC(垃圾收集)10种垃圾回收器作用于不同内存区域以及相互之间的搭配使用。5.1、Serial单线程,在进行垃圾收集时必须暂停其他所有的工作线程(“Stop the World”)。虚拟机运行在Client模式下的默认新生代收集器。简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程效率。JVM配置开启Serial新生代使用Serial GC(复制算法),老年代将自动使用原创 2021-05-06 13:03:19 · 179 阅读 · 1 评论 -
GC(垃圾收集)
GC(垃圾收集)1、GC 是什么? 为什么要有 GC?GC 是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java 提供的 GC 功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,但Java 语言并没有提供释放已分配内存的操作方法。2、 Java 垃圾回收机制在 Java 中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在 JVM 中,有一个垃圾回收线程,它是低优原创 2021-05-06 11:31:15 · 558 阅读 · 0 评论 -
Java 内存分配
Java 内存分配寄存器: 无法控制。静态域: 使用static 定义的静态成员。常量池: 编译时被确定并保存在 .class 文件中的(final)常量值和一些文本修饰的符号引用(类和接口的全限定名,字段的名称和描述符,方法和名称和描述符)。非 RAM 存储: 硬盘等永久存储空间。堆内存: new 创建的对象和数组,由 Java 虚拟机自动垃圾回收器管理,存取速度慢。栈内存: 基本类型的变量和对象的引用变量(堆内存空间的访问地址),速度快,可以共享,但是大小与生存期必须确定,缺乏灵活性。原创 2021-05-05 22:57:25 · 231 阅读 · 0 评论 -
类初始化过程
1、类初始化过程1、一个类要创建实例需要先加载并初始化该类;main方法所在的类需要先加载和初始化;2、一个子类要初始化需要先初始化父类;3、一个类初始化就是执行()方法;()方法由静态类变量显示赋值代码和静态代码块组成;类变量显示赋值代码和静态代码块代码从上到下顺序执行;()方法执行一次; **<clinit>()是在编译器编译代码时自动添加的。 **2、实例初始化过程1、实例初始化就是执行方法;()方法可以重载多个,一个构造器对应一个()方法;()方法由非原创 2021-05-01 23:40:08 · 2184 阅读 · 0 评论