关于java:一张PDF了解JDK11-GC调优秘籍附PDF下载

39次阅读

共计 2014 个字符,预计需要花费 6 分钟才能阅读完成。

简介

JDK11 相比 JDK10,增加了一个新的 Source-File Mode,能够间接通过 java 来运行单个 java 源文件,而不须要进行编译。同时还提供了新的 HTTP API,反对响应性 stream。

当然下面的都不是重点,重点的是 JDK11 是一个 LTS 版本,是继 JDK8 之后的又一个 LTS 版本,也可能是大家日后应用的最多的一个版本。

所以 JDK11 的 JVM 参数排汇了 JDK9,JDK10 的新个性和改变,并在他们的根底上进行了微调。

同样在文章最初,我也将 JDK11 的 GC 调优秘籍做成了一张 PDF,欢送大家下载。

废除的 VM 选项

JDK11 和 JDK9,JDK10 相比,废除的选项都差不多。这里重点讲上面几个:

-XX:+AggressiveOpts

aggressive 的中文意思是激进的,有进取心的意思。这个参数的意思是启用激进的优化选项,默认状况下是禁止的,并且是作为一个体验选项提供的。

因为这个选项可能在前面的版本中作为默认选项,所以在 JDK11 中是废除的。

-XX:+UseAppCDS

AppCDS 是在 JDK9 JPMS 中引入的新个性,能够晋升 java 程序的启动速度。

AppCDS 默认状况下是开启的所以这里也废除掉了。

留神,JVM 中的参数如果是被废除掉了,并不一定说这个选项的个性 JVM 曾经不反对了,也有可能是 JVM 默认是开启了这个选项。

Source-File Mode

什么是 Source-File Mode 呢?

Source-File Mode 就是指能够间接应用 java 命令来运行 java 源代码,而不必应用 javac 进行编译。

当然这个只对单文件的源代码无效。

有两种形式应用 Source-File Mode,一种是源文件前面带.java 后缀,如:

java HelloWorld.java

一种是增加参数 –source version 选项:

java -source 11 HelloWorld

这里的 version 指的是 JDK 版本号,能够取值 6,7,8,9,10,11。

如果没有应用.java,则必须应用 -source。

Source-File Mode 的原理是将源代码编译到内存中,而后执行源代码中的第一个 class。

Code Heap 状态剖析

咱们晓得 JVM 中的 JIT 编译器会将一些热点的 java 代码编译成机器码,而这些机器码会存储在一个叫做 code cache 的中央。

CodeHeap 就是用来生成和治理这些机器码的类。每次存储申请都会调配肯定大小的空间,这个值是由 CodeCacheSegmentSize 来定义的。

当然,为了晋升效率,你能够将 CodeCacheSegmentSize 的大小设置为和 cache line 大小统一。不过这不是必须的。

Code Heap 状态剖析就是剖析 code cache 的状态。

CodeHeap 状态剖析分为两个局部。第一局部查看整个 CodeHeap 并汇总所有认为有用 / 重要的信息。第二局部能够依据须要选的特定的命令来输入本人须要的那局部。

咱们举几个例子:

实时剖析:

jcmd <pid> Compiler.CodeHeap_Analytics [<function>] [<granularity>]

其中 function 能够有上面的几个选项:

  • all – 列出所有的信息
  • aggregate – 查看 CodeHeap,并记住本地构造中的数据。
  • UsedSpace – 输入已应用的空间
  • FreeSpace – 输入闲暇的空间
  • MethodCount – 输入 method count 信息
  • MethodSpace – 输入 method space 信息
  • MethodAge – 输入 method age 信息
  • MethodNames – 输入 name 信息
  • discard – 开释该办法的所有资源

granularity 是和 aggregate 配合应用的,代表一个 aggregate 代表的存储空间大小。

AppCDS

JDK11 在 AppCDS 下面有所晋升,能够反对从 module path 导出 archiving classes:

$ java -Xshare:dump -XX:SharedClassListFile=class_list_file \
    -XX:SharedArchiveFile=shared_archive_file \
    --module-path=path_to_modular_jar -m module_name

应用:

$ java -XX:SharedArchiveFile=shared_archive_file \
    --module-path=path_to_modular_jar -m module_name

总结

同样的,为 JDK11 特意筹备了一个 PDF,下载链接如下:

JDK11GC-cheatsheet.pdf

本文链接:http://www.flydean.com/jdk11-gc-cheatsheet/

最艰深的解读,最粗浅的干货,最简洁的教程,泛滥你不晓得的小技巧等你来发现!

欢送关注我的公众号:「程序那些事」, 懂技术,更懂你!

正文完
 0