简介

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/最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

java导出pdf_一张PDF了解JDK11 GC调优秘籍-附PDF下载相关推荐

  1. 一张PDF了解JDK10 GC调优秘籍-附PDF下载

    文章目录 简介 Java参数类型 Large Pages JIT调优 总结 简介 今天我们讲讲JDK10中的JVM GC调优参数,JDK10中JVM的参数总共有1957个,其中正式的参数有658个. ...

  2. 一张PDF了解JDK9 GC调优秘籍-附PDF下载

    文章目录 简介 Oracle中的文档 JDK9中JVM参数的变化 废弃的JVM选项 不推荐(Deprecated)的JVM选项 被删除的JVM参数 JDK9的新特性Application Class ...

  3. 一文了解JDK12 13 14 GC调优秘籍-附PDF下载

    文章目录 简介 那些好用的VM参数 G1的变化 配置FlightRecorder RAM参数 JDK13中的ZGC RTM支持 总结 简介 想了解JDK12,13,14中的GC调优秘籍吗?想知道这三个 ...

  4. 八张图彻底了解JDK8 GC调优秘籍-附PDF下载

    文章目录 简介 分代垃圾回收器的内存结构 JDK8中可用的GC 打印GC信息 内存调整参数 Thread配置 通用GC参数 CMS GC G1参数 总结 简介 JVM的参数有很多很多,根据我的统计JD ...

  5. 八张图彻底了解JDK8 GC调优秘籍!

    简介 JVM的参数有很多很多,根据我的统计JDK8中JVM的参数总共有1853个,正式的参数也有680个. 这么多参数带给我们的是对JVM的细粒度的控制,但是并不是所有的参数都需要我们自己去调节的,我 ...

  6. 2020年薪30W的Java程序员都要求熟悉JVM与性能调优!

    前言 作为Java程序员,你有没有被JVM伤害过?面试的时候是否碰到过对JVM的灵魂拷问? 一.JVM 内存区域划分 1.程序计数器(线程私有) 程序计数器(Program Counter Regis ...

  7. java eden space_JVM GC调优一则–增大Eden Space提高性能

    缘起 线上有Tomcat升级到7.0.52版,然后有应用的JVM FullGC变频繁,在高峰期socket连接数,Cpu使用率都暴增. 思路 思路是Tomcat本身的代码应该是没有问题的,有问题的可能 ...

  8. Linux下jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案

    Linux下的jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案 问题 linux的jetty下发布程序后再启动jetty服 ...

  9. Java 9 中的 GC 调优基础

    转载自   Java 9 中的 GC 调优基础 在经过了几次跳票之后,Java 9终于在原计划日期的整整一年之后发布了正式版.Java 9引入了很多新的特性,除了闪瞎眼的Module System和R ...

最新文章

  1. 51Nod-2173 ProjectEuler 71
  2. 100: cf 878C set+并查集+链表
  3. 联想笔记本使用Driver Booster更新驱动触控板失效解决方案
  4. QT Icon设置异常
  5. JS监听页面刷新及阻止页面刷新
  6. 泛在网、物联网与传感器网络有什么区别
  7. Swift之利用API可用性解决App Extension无法编译
  8. educoder——面向对象程序设计java——实验实训——实验二 - 面向对象
  9. 爬虫笔记(二)——Beautiful Soup库
  10. 千呼万唤始出来,犹抱琵琶半遮面——python变量和数据类型
  11. Window应急响应(七 NesMiner挖矿病毒)
  12. 软件设计-UML类图详解说明
  13. 输出复杂的菱形(续)
  14. 【点云压缩】Lossless Coding of Point Cloud Geometry using a Deep Generative Model
  15. python读取mysql中的数据_Python笔记:用Python读取MySQL中的数据
  16. 算法学习【1】三个空汽水瓶可以换一瓶汽水
  17. #2826. 物流运输(trans)
  18. STA静态时序分析——学习笔记
  19. PHP 开发环境配置
  20. 【语音去噪】基于matlab低通滤波器语音去噪【含Matlab源码 1900期】

热门文章

  1. node.js文件操作
  2. 我们如何实现“业务 100% 云原生化,让阿里中间件全面升级到公共云架构”?
  3. 函数计算如何访问 PostgreSQL 数据库
  4. GitHub 标星 11000+,阿里开源微服务如何连续 10 年扛住双十一大促
  5. 高德JS依赖分析工程及关键原理
  6. Dataphin的代码自动化能力如何助力商业决策
  7. 蚂蚁金服OceanBase挑战TPCC|TPC-C基准测试之数据库事务引擎挑战
  8. 【机器学习PAI实战】—— 玩转人工智能之美食推荐
  9. 清华大学:2021元宇宙研究报告
  10. 浪潮商用机器亮相金博会 夯实新常态下金融科技发展基石