Fork me on GitHub
摘要: AppCDS的全称是Application Class-Data Sharing。主要是用来在不同的JVM中共享Class-Data信息,从而提升应用程序的启动速度。 通常来说,如果要执行class字节码,JVM需要执行下面的一些步骤:给定一个类的名字,JVM需要从磁盘上面找到这个文件,加载,并验证字节码,最后将它加载进来。 如果JVM启动的时候需要加载成百上千个class,那么需要的就不是一个小数目了。 对于打包好的jar包来说,只要jar的内容不变,那么jar包中的类的数据始终是相同的。JVM在启动时候每次都会运行相同的加载步骤。 阅读全文
posted @ 2020-05-12 07:14 flydean 阅读(1608) 评论(0) 推荐(0) 编辑
摘要: Java Flight Recorder(JFR)是JVM的诊断和性能分析工具。它可以收集有关JVM以及在其上运行的Java应用程序的数据。JFR是集成到JVM中的,所以JFR对JVM的性能影响非常小,我们可以放心的使用它。 一般来说,在使用默认配置的时候,性能影响要小于1%。 JFR的历史很久远了。早在Oracle2008年收购BEA的时候就有了。JFR一般和JMC(Java Mission Control)协同工作。 JFR是一个基于事件的低开销的分析引擎,具有高性能的后端,可以以二进制格式编写事件,而JMC是一个GUI工具,用于检查JFR创建的数据文件。 这些工具最早是在BEA的JRockit JVM中出现的,最后被移植到了Oracle JDK。最开始JFR是商用版本,但是在JDK11的时候,JFR和JMC完全开源了,这意味着我们在非商用的情况下也可以使用了。 而在今天的JDK 14中,引入了一个新的JFR特性叫做JFR Event Streaming,我们将在本文中详细讲解。 阅读全文
posted @ 2020-05-12 07:03 flydean 阅读(2193) 评论(0) 推荐(0) 编辑