Fork me on GitHub

随笔分类 -  java

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 16 下一页
java相关教程
摘要:简介 StringTable是什么?它和String.intern有什么关系呢?在字符串对象的创建过程中,StringTable有起到了什么作用呢? 一切的答案都在本文中,快来看看吧。 intern简介 intern是String类中的一个native方法,所以它底层是用c++来实现的。感兴趣的同学 阅读全文
posted @ 2020-07-26 11:25 flydean 阅读(646) 评论(1) 推荐(0) 编辑
摘要:简介 想了解JDK12,13,14中的GC调优秘籍吗?想知道这三个版本中JVM有什么新的变化吗? 一起来看看这期的GC调优秘籍,因为JDK12,13,14中的GC变化不太大,所以这里一起做个总结,文末附有相应的PDF下载,希望大家能够喜欢。 那些好用的VM参数 我们再讲几个之前的版本中没有讲过的比较 阅读全文
posted @ 2020-07-25 12:10 flydean 阅读(633) 评论(2) 推荐(0) 编辑
摘要:简介 锁和同步是java多线程编程中非常常见的使用场景。为了锁定多线程共享的对象,Java需要提供一定的机制来实现共享对象的锁定,从而保证一次只有一个线程能够作用于共享对象。当第二个线程进入同一个区域的时候,必须等待第一个线程解锁该对象。 JVM是怎么做到的呢?为了实现这个功能,java对象又需要具 阅读全文
posted @ 2020-07-24 09:17 flydean 阅读(1146) 评论(1) 推荐(0) 编辑
摘要:简介 现代CPU为了提升性能都会有自己的缓存结构,而多核CPU为了同时正常工作,引入了MESI,作为CPU缓存之间同步的协议。MESI虽然很好,但是不当的时候用也可能导致性能的退化。 到底怎么回事呢?一起来看看吧。 false-sharing的由来 为了提升处理速度,CPU引入了缓存的概念,我们先看 阅读全文
posted @ 2020-07-23 09:14 flydean 阅读(1561) 评论(1) 推荐(0) 编辑
摘要:简介 JDK11相比JDK10,添加了一个新的Source-File Mode,可以直接通过java来运行单个java源文件,而不需要进行编译。同时还提供了新的HTTP API,支持响应性stream。 当然上面的都不是重点,重点的是JDK11是一个LTS版本,是继JDK8之后的又一个LTS版本,也 阅读全文
posted @ 2020-07-22 09:24 flydean 阅读(776) 评论(1) 推荐(0) 编辑
摘要:简介 之前的文章中,我们使用JOL工具简单的分析过String,数组和集合类的内存占用情况,这里再做一次更详细的分析和介绍,希望大家后面再遇到OOM问题的时候不再抱头痛哭,而是可以有章可循,开始吧。 数组 先看下JOL的代码和输出: //byte array log.info("{}",ClassL 阅读全文
posted @ 2020-07-21 09:27 flydean 阅读(2888) 评论(1) 推荐(2) 编辑
摘要:简介 在之前的文章中,我们介绍了使用JOL这一神器来解析java类或者java实例在内存中占用的空间地址。 今天,我们会更进一步,剖析一下在之前文章中没有讲解到的更深层次的细节。一起来看看吧。 对象和其隐藏的秘密 java.lang.Object大家应该都很熟悉了,Object是java中一切对象的 阅读全文
posted @ 2020-07-20 07:51 flydean 阅读(1162) 评论(1) 推荐(0) 编辑
摘要:简介 JVM在运行的时候会对class文件进行加载,链接和初始化的过程。class文件中定义的常量池在JVM加载之后会发生什么神奇的变化呢?快来看一看吧。 class文件中的常量池 之前我们在讲class文件的结构时,提到了每个class文件都有一个常量池,常量池中存了些什么东西呢? 字符串常量,类 阅读全文
posted @ 2020-07-16 09:06 flydean 阅读(6026) 评论(1) 推荐(3) 编辑
摘要:简介 一切的一切都是从javac开始的。从那一刻开始,java文件就从我们肉眼可分辨的文本文件,变成了冷冰冰的二进制文件。 变成了二进制文件是不是意味着我们无法再深入的去了解java class文件了呢?答案是否定的。 机器可以读,人为什么不能读?只要我们掌握java class文件的密码表,我们可 阅读全文
posted @ 2020-07-15 09:24 flydean 阅读(1045) 评论(2) 推荐(1) 编辑
摘要:简介 今天我们讲讲JDK10中的JVM GC调优参数,JDK10中JVM的参数总共有1957个,其中正式的参数有658个。 其实JDK10跟JDK9相比没有太大的变化,一个我们可以感受到的变化就是引入了本地变量var。 为了方便大家的参考,特意将JDK10中的GC参数总结成了一张PDF,这个PDF在 阅读全文
posted @ 2020-07-14 09:16 flydean 阅读(286) 评论(0) 推荐(0) 编辑
摘要:简介 排序可能是所有的算法中最最基础和最最常用的了。排序是一个非常经典的问题,它以一定的顺序对一个数组(或一个列表)中的项进行重新排序。 排序算法有很多种,每个都有其自身的优点和局限性。 今天我们来学习最最简单的冒泡排序算法。 冒泡排序的原理 冒泡排序的原理很简单,我们想象一下一个一个的气泡上浮的过 阅读全文
posted @ 2020-07-12 08:32 flydean 阅读(766) 评论(1) 推荐(0) 编辑
摘要:简介 使用过JMH的同学一定会惊叹它的神奇。JMH作为一个优秀的Benchmark框架带给了我们无数的欢乐。作为一个有极客精神的程序员,那么有没有想过去自己实现一个Benchmark框架呢? 在实现Benchmark框架的时候有需要注意些什么问题呢?快来一起看看吧。 八条军规 这里叫军规实际上不合适 阅读全文
posted @ 2020-07-11 11:00 flydean 阅读(870) 评论(1) 推荐(0) 编辑
摘要:简介 我们知道JVM运行时数据区域专门有一个叫做Stack Area的区域,专门用来负责线程的执行调用。那么JVM中的栈到底是怎么工作的呢?快来一起看看吧。 JVM中的栈 小师妹:F师兄,JVM为每个线程的运行都分配了一个栈,这个栈到底是怎么工作的呢? 小师妹,我们先看下JVM的整体运行架构图: 我 阅读全文
posted @ 2020-07-10 08:37 flydean 阅读(1536) 评论(3) 推荐(2) 编辑
摘要:简介 分代垃圾回收器在进行minor GC的时候会发生什么操作呢?有没有什么提高效率的手段呢?今天我们和小师妹一起来了解一下垃圾回收中的Dirty cards和PLAB 分代收集器中的空间划分 小师妹:F师兄,能再讲讲分代垃圾收集器中的空间划分吗? 分代垃圾回收器中的Eden,Old和Survivo 阅读全文
posted @ 2020-07-09 09:04 flydean 阅读(924) 评论(1) 推荐(0) 编辑
摘要:简介 java程序员都听说过GC,大家也都知道GC的目的是扫描堆空间,然后将那些标记为删除的对象从堆空间释放,以提升可用的堆空间。今天我们会来探讨一下隐藏在GC背后的一个小秘密Safepoints。 GC的垃圾回收器 小师妹:F师兄,GC的垃圾回收器的种类为什么会有这么多呀?使用起来不是很麻烦。并且 阅读全文
posted @ 2020-07-08 09:17 flydean 阅读(952) 评论(1) 推荐(0) 编辑
摘要:简介 读万卷书不如行万里路,讲了这么多assembly和JVM的原理与优化,今天我们来点不一样的实战。探索一下怎么使用assembly来理解我们之前不能理解的问题。 一个奇怪的现象 小师妹:F师兄,之前你讲了那么多JVM中JIT在编译中的性能优化,讲真的,在工作中我们真的需要知道这些东西吗?知道这些 阅读全文
posted @ 2020-07-07 09:08 flydean 阅读(862) 评论(2) 推荐(0) 编辑
摘要:简介 老是使用命令行工具在现代化社会好像已经跟不上节奏了,尤其是在做JIT分析时,使用LogCompilation输出的日志实在是太大了,让人望而生畏。有没有什么更加简便的方法来分析JIT日志呢?快来和小师妹一起来学习JITWatch吧。 什么是JIT 小师妹,F师兄,JIT就是Just In Ti 阅读全文
posted @ 2020-07-05 17:17 flydean 阅读(1205) 评论(2) 推荐(0) 编辑
摘要:简介 之前在讲JIT的时候,有提到在编译过程中的两种优化循环展开和粗化锁,今天我们和小师妹一起从Assembly的角度来验证一下这两种编译优化方法,快来看看吧。 循环展开和粗化锁 小师妹:F师兄,上次你讲到在JIT编译的过程中会进行一些编译上面的优化,其中就有循环展开和粗化锁。我对这两种优化方式很感 阅读全文
posted @ 2020-07-04 09:01 flydean 阅读(901) 评论(0) 推荐(1) 编辑
摘要:简介 上篇文章和小师妹一起介绍了PrintAssembly和PrintAssembly在命令行的使用,今天本文将会更进一步讲解如何在JDK8和JDK14中分别使用PrintAssembly,并在实际的例子中对其进行进一步的深入理解。 JDK8和JDK14中的PrintAssembly 小师妹:F师兄 阅读全文
posted @ 2020-07-03 09:07 flydean 阅读(1105) 评论(2) 推荐(0) 编辑
摘要:简介 逃逸分析我们在JDK14中JVM的性能优化一文中已经讲过了,逃逸分析的结果就是JVM会在栈上分配对象,从而提升效率。如果我们在多线程的环境中,如何提升内存的分配效率呢?快来跟小师妹一起学习TLAB技术吧。 逃逸分析和栈上分配 小师妹:F师兄,从前大家都说对象是在堆中分配的,然后我就信了。上次你 阅读全文
posted @ 2020-07-01 09:06 flydean 阅读(881) 评论(1) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 16 下一页