深入理解synchronized关键字

深入理解synchronized关键字

前言线程安全在并发编程学习过程中,我们应该都听过“线程安全”这个名称,对于这一概念,我们知道它可以解决并发编程不安全的问题,也有一个简单的印象:“代码在并发环境下,可以安全地被多个线程使用,这就是线程安全“。上...
你知道Java有多少种内存溢出吗

你知道Java有多少种内存溢出吗

Java内存区域关于这部分内容大多来源于《深入理解Java虚拟机》一书。Java 运行时数据区域(JDK8)如下图所示:关于上述提到的线程共享和线程隔离区域,下图做详细讲解:程序计数器程序计数器是一块较小的内存空间,可以看作...
日志分析工具:GCViewer、VisualVM、GCeasy

日志分析工具:GCViewer、VisualVM、GCeasy

GCViewerGCViewer 是一个可以将 JVM 中的 gc log 可视化的工具,使用该工具可以帮助你充分的发现 JVM 垃圾回收中的潜在问题,让你可以更加准确的做出关于 JVM GC 优化的决策。安装并启动git clone https://github.com/chewi...
MAT工具使用详解

MAT工具使用详解

Eclipse Memory Analyzer (MAT)是一个快速且功能丰富的Java堆分析器,可帮助您发现内存泄漏并减少内存消耗。安装并启动直接参考 Mac下MAT的安装需要注意的是注意 JDK 版本和 MAT 版本的映射,最新的 MAT 版本为 1.12.0,需...
GC调优基础以及初识jstat命令

GC调优基础以及初识jstat命令

影响垃圾收集性能有三个主要的属性,垃圾收集调优又有三个基本原则,以及垃圾收集调优时需要采集的信息。如果想要对垃圾收集进行调优,则需要根据实际场景对不同属性做出取舍,理解调优的原则以及收集什么信息。性能属性吞...
你知道Jhsdb整合的故障处理工具吗

你知道Jhsdb整合的故障处理工具吗

Jhsdb 是 JDK9 引入的新的命令行工具,它有 clhsdb、debugd、hsdb、jstack、jmap、jinfo、jsnap 这些 mode 可以使用,其中有几个在名称和功能上与以前的 JDK 发行版中可用的各个命令行工具相对应。看得出来,官方想要 jhsdb...
关于即时编译器的其他一些优化手段

关于即时编译器的其他一些优化手段

在前面两篇文章讲述了即时编译器的两种特殊优化技术:方法内联和逃逸分析,其中基于逃逸分析结果又有三种优化方式:同步消除、栈上分配以及标量替换。除此之外,即时编译器还有很多优化手段,其中有不少经典编译器的优化手...
关于逃逸分析的学习

关于逃逸分析的学习

上文讲解完方法内联后,JIT 即时编译还有一个最前沿的优化技术:**逃逸分析(Escape Analysis) **。废话少说,我们直接步入正题吧。逃逸分析首先我们需要知道,逃逸分析并不是直接的优化手段,而是通过动态分析对象的作用...
深入学习方法内联

深入学习方法内联

在前面多篇文章中多次提到方法内联,作为编译器最重要的优化技术,该技术不仅可以消除调用本身带来的性能开销,还能够触发更多的优化。本文将带领大家对该技术一探究竟。方法内联方法内联指的是:在编译过程中遇到方法调用...
关于即时编译器的优化措施

关于即时编译器的优化措施

我们来继续讲解 Java 虚拟机中的即时编译。Profiling上篇文章中介绍了关于分层编译的交互关系图,这里再贴一遍。对于图片中描述的四种编译途径做过详细介绍,这里就不重复介绍了,其中提到了如下内容:分层编译中的 0 层、2...