随笔分类 -  一步一步学JVM

摘要:Serial收集器 Serial收集器是最基本、历史最悠久的收集器。这个收集器是一个单线程的收集器。它在进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。Serial收集器是新生代的收集器。采用的复制算法。 ParNew收集器 ParNew收集器其实就是Serial收集器的多线程版本,除了 阅读全文
posted @ 2017-08-22 21:05 一步一步学 阅读(123) 评论(0) 推荐(1)
摘要:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、换换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 类加载的时机 类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段,其中验证、 阅读全文
posted @ 2017-08-22 16:11 一步一步学 阅读(546) 评论(1) 推荐(1)
摘要:Class类文件的结构 Class文件是一组以8字节为基础单位的二进制流。当遇到需要占用8字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。 根据Java虚拟机规范的规定,Class文件格式采用一种类似于C语言结构体的伪结构来存储数据,这种伪结构中有两种数据类型:无符号书和 阅读全文
posted @ 2017-08-22 11:16 一步一步学 阅读(109) 评论(0) 推荐(0)
摘要:主内存与工作内存 Java内存模型的主要目标是定义程序中各个变量的访问规则。即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。这里的变量和Java编程中所说的变量有所区别,它包括了实例字段、静态字段和构成数组对象的元素。但不包括局部变量和方法参数。 Java内存模型规定了所有的变量都存储 阅读全文
posted @ 2017-08-21 21:20 一步一步学 阅读(131) 评论(0) 推荐(0)
摘要:标记-清除算法 算法分为标记和清除两个阶段:首先标记所有需要回收的对象,在标记完成后统一回收所有被标记的对象。 该算法存在的缺点: 1、 效率问题:标记和清除两个过程的效率都不高 2、 空间问题:标记清除之后会产生大量不连续的内存碎片,内存碎片太多可能会倒是以后在程序运行过程中需要分配较大的对象时, 阅读全文
posted @ 2017-08-21 19:55 一步一步学 阅读(171) 评论(0) 推荐(0)
摘要:垃圾回收器在对对象进行回收前,首先要判断对象是否还“活着”。判断方法有以下两种 引用计数法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1。当引用失效时,计数器值就减1。任何时刻计数器为0的兑现就是不可能再被使用的。 引用计数法的实现简单,判断效率也高,也有一些比较著名的应用案例 阅读全文
posted @ 2017-08-21 17:37 一步一步学 阅读(139) 评论(0) 推荐(1)
摘要:程序计数器(Program Counter Register) 像我们平时读书一样,当我们在去做别的事情之前,我们会对我们读到什么地方了做一个标记,方便我们再回来的时候接着重新读。如果这本书有很多人读呢?那么每个人都会对自己读到了哪里做一个标记。(标记都是个人自己保存) 那么程序计数器也是一样的,同 阅读全文
posted @ 2017-08-12 11:52 一步一步学 阅读(125) 评论(0) 推荐(0)