![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 64
this.
这个作者很懒,什么都没留下…
展开
-
JVM类加载机制
虚拟机把描述类的数据从class文件加载到内存,并进行数据校验,转化解析和初始化,最终形成被虚拟机直接使用得Java类型,这个过程就是体现了虚拟机的类加载机制。类加载经历了哪些过程?类从被加载到虚拟机内存中开始,到被卸载出内存为止,总共经历了一下这些阶段:加载、验证、准备、解析、初始化、使用、卸载。其中验证、准备、解析三个部分统称为连接,如下图所示: 其中,加载、验证、准备、初始化和卸载这5个原创 2016-09-30 20:54:35 · 336 阅读 · 0 评论 -
深入Java内存区域
接触Java不久,就了解到Java内存区域的简单划分,如寄存器,堆,堆栈等。在阅读《深入理解Java虚拟机》后,对于内存的划分又有了新的理解。运行时数据区域Java虚拟机在执行Java程序时会把内存划分为几个不同的数据区域,分别为程序计数器,虚拟机栈,本地方法栈,堆,方法区。而除了程序计数器之外的每个区域都会有内存溢出的现象,通过下图可以对其内存区域进行分类: 程序计数器程序计数器是一块较小的空间原创 2016-09-28 13:01:34 · 395 阅读 · 0 评论 -
浅析ClassLoader
类加载过程中加载阶段是最可控的一个阶段,可以由系统的类加载器来加载,也可以用户自定义加载,目的都是为了将二进制字节流读入内存中。在加载类时,是通过ClassLoader的loadClass()方法来实现的。ClassLoader的简单使用那系统提供的类加载器与用户自定义的类加载器加载的类有什么区别呢?那么尝试自己手动创建一个类加载器来加载类:public class ClassLoaderTest原创 2016-10-01 00:41:02 · 378 阅读 · 0 评论 -
Java内存模型
由于CPU与存储器的运行速度差异的存在,需要引用高速缓存来解决。而引入高速缓存之后,又会带来缓存一致性的问题,即多个处理器有着自己的高速缓存,但却共用一个主存。Java内存模型在Java虚拟机中是怎么解决上述问题的?先用一个图来引用Java的内存模型: 首先,对几个名词进行梳理: 主内存:Java内存模型中规定了所有的变量都必须存储在主内存中,可以类比硬件中的内存。 工作内存:每条线程都有原创 2016-10-02 11:49:12 · 368 阅读 · 0 评论 -
Java垃圾回收算法
垃圾回收目的在于回收那些无用对象占用的内存,以释放出空间,减缓程序设计的压力。既然Java实现了垃圾的自动回收,那么就有必要了解一下它是如何实现垃圾回收的。如何判断对象“已死”?在垃圾收集器对堆进行回收前,首先需要做的事情就是判断哪些对象已经不会再被使用。主要有两种方式实现判定:引用计数算法给每个对象添加一个引用计数器(初始值为1),每当有一个地方引用它的时候,计数器就加一。每当引用失效时,计数器就原创 2016-10-02 16:07:21 · 500 阅读 · 0 评论