记得刚大学毕业时,为了应付面试,疯狂的在网上刷JAVA的面试题,很多都靠死记硬背。其中有道面试题,给我的印象非常之深刻,有个大厂的面试官,顺着这道题目,一直往下问,问到java虚拟机的知识,最后把我给问住了。 我当时的表情是这样的: 后来我有机会面试别人了,也按照他的思路出面试题,很多已经工作了2年 ...
分类:
编程语言 时间:
2019-09-30 21:50:36
阅读次数:
104
Java代码经历三个阶段:源代码阶段(Source) -> 类加载阶段(ClassLoader) -> 运行时阶段(Runtime) 首先我们来理清一下Java代码整个执行过程, 让我们对其有个整体的认识: Java源程序(.java)经过Java编译器(javac)以后, 生成一个或多个字节码(. ...
分类:
编程语言 时间:
2019-09-30 18:29:00
阅读次数:
104
①:Serial(串行)收集器 最基本,历史最悠久的串行收集器,单线程组赛队列,jdk1.5之前默认的收集器。 优点:简单高效,没有线程交互的开销。 缺点:单线程,只会使用一个cpu/一条收集线程去完成垃圾收集。 对应算法:年轻代复制算法,老年代标记整理算法。 ②:ParNew收集器(Serial收 ...
分类:
其他好文 时间:
2019-09-27 01:11:55
阅读次数:
82
如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 虽然我们对各个收集器进行比较,但并非要挑选出一个最好的收集器。因为直到现在为止还没有最好的垃圾收集器出现,更加没有万能的垃圾收集器,我们能做的就是根据具体应用场景选择适合自己的垃圾收集器。试想一下:如果有一种四海之内、任何场景 ...
分类:
其他好文 时间:
2019-09-24 08:01:00
阅读次数:
106
首先要明确,垃圾回收管理jvm的堆内存,方法区是堆内存的一部分,所以也是。 而本地方法栈,虚拟机栈,程序计数器随着线程开始而产生,线程的结束而消亡,是不需要垃圾回收的。 1. 判断对象是否可以被回收 1.1 引用计数法 + 原理:给对象添加一个计数标志,被引用一次就加1,引用取消就减1,而垃圾回收时 ...
分类:
编程语言 时间:
2019-09-23 22:40:21
阅读次数:
113
贴个图 + Serial收集器 最简单的收集器,单线程,收集器会暂停用户线程,称为"stop the world"。 + ParNew收集器 Serial收集器的多线程版本,其它类似。默认线程数为CPU线程数,通过 XX:ParallelGCThreads=? 可以指定线程数 + Parallel ...
分类:
其他好文 时间:
2019-09-23 22:24:14
阅读次数:
135
先上个图 这是根据《Java虚拟机规范(第二版)》所画的jvm内存模型。 + 程序计数器:程序计数器是用来记录当前线程方法执行顺序的,对应的就是我们编程中一行行代码的执行顺序,如分支,跳转,循环,异常处理等。所以在多线程下,程序计数器必然是线程隔离的,每个线程都有自己独立的程序计数器。注意,Java ...
分类:
其他好文 时间:
2019-09-23 22:14:47
阅读次数:
117
目的:写给自己看的,不如其他大神全,以后慢慢修修改改 一:如何判断数据是否垃圾数据 1.引用计数法 当创建一个对象时,为此对象分配一个引用计数器。当有其他对象引用这个对象时,计数器就+1。当引用失效了,计数器-1。 当一个对象的引用计数器=0时,此对象就可以被回收。 优点:原理简单,实现方便。 缺点 ...
分类:
其他好文 时间:
2019-09-21 23:40:15
阅读次数:
125
记一次有关于Jvm垃圾收集器的整理 垃圾回收器 算法: 引用计数法 复制算法 标记清楚 标记整理 垃圾回收的方式 1、Serial:串行回收 2、Parallel:并行回收 3、CMS:并发标记清除 4、G1:G1 截止到java10 之后有ZGC Seial:串行垃圾回收,单线程垃圾回收的时候会停 ...
分类:
其他好文 时间:
2019-09-21 21:18:26
阅读次数:
102
一.logging模块日志级别介绍 日志一共分为5个等级,从低到高分别是: 这5个等级,也分别对应5种打印日志的方法:debug、info、warning、error、critical。默认的日志收集器是收集WARNING以上等级的日志。 二、日志收集器 三、日志输出渠道 有两种方式记录跟踪,一种是 ...
分类:
其他好文 时间:
2019-09-21 19:36:41
阅读次数:
113