1

如何使用JWarmup功能?

 1 year ago
source link: https://developer.aliyun.com/ask/321147
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

如何使用JWarmup功能?

2021-05-04 15:29:53 1043 1

如何使用JWarmup功能?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

全部回答(1)
1358896759097293
2021-05-05 22:44:46
2.png

下面根据一个简单的例子展示如何使用JWarmup功能。 上方为一个简单的 Java程序,在这个程序之中有一个循环用来模拟线上应用的一个热点,循环会反复调用一个方法。

(二)Recording 如何去使用JWarmup的记录功能Recording? 首先,从http://dragonwell-jdk.io/下载Dragonwell 8; 添加JVM参数启动JWarmup的记录功能:

-XX:+CompilationWarmUpRecording
-XX: CompilationWarmUpRecording=30
-XX: CompilationWarmUpLogfile=./jwarmup.log
-XX:-ClassUnloading

第一个参数表示去打开JWarmup的记录功能; 第二个参数表示需要记录的时间,在当前Demo之中选择记录30秒; 第三个参数表示记录编译信息生成文件的路径,在这个Demo中,我们将这个文件生成在当前目录下的jwarmup.log这个文件; 第四个参数是由于JWarmup的Recording功能不支持ClassUnloading,所以需要将这一功能关闭。

当设定的记录时间到了以后,JWarmup会将记录好的编译信息输出到指定的文件之中,同时会在应用程序的输出中看到以下这样一条日志,表明记录是成功的。

(三)Replaying 如何使用JWarmup的Replaying功能? 添加JVM参数:

-XX:+CompilationWarmUp
-XX:+CompilationWarmUpLogfile=./jwarmup.log
-XX:+PrintCompilationWarmUpDetail

第一个参数表示要使用JWarmup的编译功能; 第二个参数需要指定刚刚记录的包含编译信息的文件,在当前Demo之中,就是刚刚所记录的当前目录下的jwarmup.log文件; 第三个参数表示我希望JWarmup打印出一些详细的日志,帮助我记录JWarmup工具的一些行为。

当把这些参数配置好以后,将服务启动,等待一些关键的类的加载完成,可以使用jcmd JWarmup -notify主动触发Warmup的编译。 当Warmup编译完成后,可以在程序的标准输出中看到下面三条log,就表示这一次Warmup编译是成功的。

以上就是关于JWarmup的基本介绍,包含JWarmup所需要解决的问题,解决方法,以及用案例讲述如何使用JWarmup功能。同时,我们对JWarmup这个功能还做了非常多的改进,形成了我们另外一份工作:JWarmup2。

3.png

上方为JWarmup2整体流程图,可以看到在这份工作之中,我们记录了更加丰富的信息,去更好的解决应用程序预热的问题。 首先我们会使用JFR(Java Flight Recorder)统一所记录的编译的信息,这些信息也可以形成一个JFR文件,使用JDK官方所提供的Java Mission Control浏览所记录的所有热点方法的信息。 此外,我们除了记录一些方法的编译,还记录了每一个方法它所依赖的类的信息。这样子在我们第二步预热的时候,就可以根据这些依赖的信息,当我们看到一个方法,它所有的依赖的类都被加载了以后,就会自动触发这个方法的Warmup编译,避免了人工手动触发Warmup编译。 此外,我们还额外记录了这些方法所有的Profiling信息,这些信息能够帮助我们在第二步去更好地生成Warmup的代码,从而进一步提高应用程序的性能。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK