
java虚拟机
文章平均质量分 85
DrawnBreak
这个作者很懒,什么都没留下…
展开
-
java早期和晚期编译优化——知识点速览
早期编译优化编译过程大致分为3类:解析与填充符号表注解处理分析与字节码生成源码JavaCompiler里的关键过程:第一步:第二步语法分析、词法分析第三步:第四步:执行注解处理接着就是语义分析及字节码生成以上的关键点:词法语法解析是第一步,生成符号注解处理是第二步然后语法糖、字节码都是第三步的事情。上述步骤的详细解释:第一步:-------词法分析:就是代码转成token标记。例如int a=b+2 转成 Int \a=\b+\2 这6个to原创 2021-10-18 00:26:40 · 242 阅读 · 0 评论 -
Java编译优化你真的读懂了吗?15个问题考验一下自己
文章目录早期编译过程晚期编译优化首先提出一个问题,为什么C++的编译速度会比java慢很多?二者运行程序的速度差异子啊那? 了解了java的早期和晚期过程,就能理解这个问题了。这里会提15个问题确认是否真的理解,如果完全没这方面的概念,则好好看一下前面的早期和晚期编译优化读书笔记早期编译过程Q: java早期编译过程分为哪3步?A:词法语法解析、填充符号表注解处理语义分析与字节码生成。Q: 上面的步骤中, 符号表是干吗的?A:符号表是符号地址和符号信息构成的表格。用于后面原创 2021-10-18 00:21:49 · 559 阅读 · 0 评论 -
每天1个java知识点——java语法糖
泛型擦除:java中的泛型只在 程序源码中存在, 在编译后的字节码文件中已经替换为原生类型, 并会插入一些强制转换的代码。即T f(T t) { T a = T.getA(); return a}实际上是T f(Object t) { Object a = (T)t.getA(); return (T)a;}即只在会方法的入口 和方法的出口处,做强制转换, 而实际上传入的都是原生类型,可以理解为object神奇的例子:public static原创 2021-07-19 23:33:17 · 268 阅读 · 0 评论 -
每天一个java知识点——ThreadLocal
最近感觉成长陷入了阻塞,特此给自己制定1个”每天1个XX知识点“的查漏补缺计划。Q: ThreadLocal的常见使用场景?A:每个线程中需要维护1个不同的副本, 但这个副本可能是某一个时刻一起塞入每个线程的, 只不过之后该副本的变化 不再受其他线程的影响。常见场景有连接器管理模块connectorManager, 每个线程持有的connect变量是单独使用的,不会互相影响或者需要加锁。原因就是将其作为副本放入每个线程,当线程启动连接或者关闭时,不影响其他线程里的getConnect方法。Q:原创 2021-07-18 23:09:11 · 222 阅读 · 1 评论 -
图解Java类文件结构
跟着书过了一遍把图画出来之后那时候叫一个豁然开朗原创 2020-05-24 23:15:27 · 216 阅读 · 0 评论 -
图解java虚拟机之类的加载机制、双亲委派
类的加载流程加载流程如下,以及主动加载和被动加载的2种区别和时机:双亲委派原创 2020-05-20 00:11:18 · 161 阅读 · 0 评论 -
图解java虚拟机之内存分配和垃圾收集
根据《深入理解java虚拟机》一书所作的笔记和图。绘图不易,转载请注明出处引用计数法的缺陷可能存在循环引用, 例如A = B 和B =A , 实际上已经没有再使用他们这2个了,但是依然不会被认为已死可达性分析算法:给定1个GC ROOT对象, 然后判断某个对象能否到达gcRoot这个顶点 ,达不到则认为时可回收。GC ROOT对象: 虚拟机栈引用的对象、 类静态属性引用方法区的回收4种垃圾收集的方法垃圾收集的运行流程多种垃圾收集器的演变图对象在新生代和老生代的之前的转原创 2020-05-19 01:09:57 · 144 阅读 · 0 评论 -
图解java虚拟机之内存区域
(图片皆为原创,禁止转载)内存区域:句柄和指针访问对象的2种方式区别:java对象的结构:new1个对象时的过程:原创 2020-03-11 00:03:10 · 200 阅读 · 0 评论