首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
奥兰治的威廉
掘友等级
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
57
文章 12
沸点 45
赞
57
返回
|
搜索文章
最新
热门
Java并发编程笔记(一)基础(1)
CPU、内存、I/O 设备核心矛盾就是这三者的速度差异。解决方法 编译程序优化指令执行次序,使得缓存能够得到更加合理地利用。 一个线程对共享变量的修改,另外一个线程能够立刻看到,我们称为可见性。 操作系统允许某个进程执行一小段时间,例如 50 毫秒,过了 50 毫秒操作系统就会…
JVM笔记(十五)实用工具(2)
在上一篇中,我介绍了jmap工具,它支持导出 Java 虚拟机堆的二进制快照。eclipse 的MAT 工具便是其中一个能够解析这类二进制快照的工具。 MAT 本身也能够获取堆的二进制快照。该功能将借助jps列出当前正在运行的 Java 进程,以供选择并获取快照。由于jps会将…
JVM笔记(十四)实用工具(1)
javap 是一个能够将 class 文件反汇编成人类可读格式的工具。在本专栏中,我们经常借助这个工具来查阅 Java 字节码。 举个例子,在讲解异常处理那一篇中,我曾经展示过这么一段代码。 编译过后,我们便可以使用 javap 来查阅 Foo.test 方法的字节码。 这里面…
JVM笔记(十三)代码优化(3)
我们经常会遇见 Java 语言较难表达,甚至是无法表达的应用场景。比如我们希望使用汇编语言(如 X86_64 的 SIMD 指令)来提升关键代码的性能;再比如,我们希望调用 Java 核心类库无法提供的,某个体系架构或者操作系统特有的功能。 在这种情况下,我们往往会牺牲可移植性…
JVM笔记(十二)代码优化(2)
注解(annotation)是 Java 5 引入的,用来为类、方法、字段、参数等 Java 结构提供额外信息的机制。我先举个例子,比如,Java 核心类库中的@Override注解是被用来声明某个实例方法重写了父类的同名同参数类型的方法。 @Override注解本身被另外两个…
JVM笔记(十一)代码优化(1)
在上一篇文章中,我介绍了逃逸分析,也介绍了基于逃逸分析的优化方式锁消除、栈上分配以及标量替换等内容。 其中的标量替换,可以看成将对象本身拆散为一个个字段,并把原本对对象字段的访问,替换为对一个个局部变量的访问。 举个例子,上面这段代码中的bar方法,经过逃逸分析以及标量替换后,…
JVM笔记(十)高效编译(5)
Java 中Iterable对象的 foreach 循环遍历是一个语法糖,Java 编译器会将该语法糖编译为调用Iterable对象的iterator方法,并用所返回的Iterator对象的hasNext以及next方法,来完成遍历。 这里我也列举了所涉及的ArrayList代…
JVM笔记(九)高效编译(4)
方法内联技术指的是:在编译过程中遇到方法调用时,将目标方法的方法体纳入编译范围之中,并取代原方法调用的优化手段。方法内联不仅可以消除调用本身带来的性能开销,还可以进一步触发更多的优化。因此,它可以算是编译优化里最为重要的一环。 以 getter/setter 为例,如果没有方法…
JVM笔记(八)高效编译(3)
1. 中间表达形式(IR) 在编译原理课程中,我们通常将编译器分为前端和后端。其中,前端会对所输入的程序进行词法分析、语法分析、语义分析,然后生成中间表达形式,也就是 IR(Intermediate Representation )。后端会对 IR 进行优化,然后生成目标代码。…
JVM笔记(七)高效编译(2)
Java 语言拥有 8 个基本类型,每个基本类型都有对应的包装(wrapper)类型。 之所以需要包装类型,是因为许多 Java 核心类库的 API 都是面向对象的。举个例子,Java 核心类库中的容器类,就只支持引用类型。 当需要一个能够存储数值的容器类时,我们往往定义一个存…
下一页
个人成就
文章被点赞
53
文章被阅读
55,793
掘力值
1,331
关注了
15
关注者
80
收藏集
8
关注标签
12
加入于
2019-07-27