Skip to content

阿里巴巴Dragonwell11用户指南

Sanhong Li edited this page Jun 10, 2024 · 21 revisions

简介

阿里巴巴有着最丰富的Java应用场景,覆盖电商,金融,物流等众多领域,世界上最大的Java用户之一。 作为OpenJDK的下游, Alibaba Dragonwell是阿里巴巴内部OpenJDK定制版AJDK的开源版本, AJDK为在线电商,金融,物流做了结合业务场景的优化,运行在超大规模的,100,000+ 服务器的阿里巴巴数据中心。 Alibaba Dragonwell是OpenJDK的下游(friendly fork),使用了和OpenJDK一样的licensing。阿里会更紧密地和OpenJDK等开源社区协作, 贡献更多的patches, 促进Java技术的持续发展。

使用Alibaba Dragonwell 11

更多下载镜像站点

  • 将下载下来的tar包解压到目标安装目录即可

为您的Java应用启用Alibaba Dragonwell 11

将您的应用脚本或者环境变量中的JDK目录变量(一般是JAVA_HOME)指向上一步中安装的Alibaba Dragonwell 11目录。 重启应用以使用Alibaba Dragonwell JDK配置

JFR Object Profiling

Download JMC tools: Linux, OSX, Windows

在启动阶段通过参数 -XX:FlightRecorderOptions=sampleobjectallocations=true 开启这个特性。目前该特性使用当前线程在 C2 中创建的新对象数量作为采样的依据,用户可以通过 -XX:FlightRecorderOptions=sampleobjectallocations=true,objectallocationssamplinginterval=512 设置采样的间隔,默认值为1024。 然后可以通过以下步骤生成记录文件:

  1. 通过 jcmd <pid> JFR.start settings=ObjectProfiling.jfc name=MyRecording 开启一次 JFR 记录, ObjectProfiling.jfc 需要包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration version="2.0">
  <event name="jdk.OptoInstanceObjectAllocation">
    <setting name="enabled">true</setting>
  </event>
  <event name="jdk.OptoArrayObjectAllocation">
    <setting name="enabled">true</setting>
  </event>
</configuration>
  1. 运行一定时间后, 通过 jcmd <pid> JFR.stop name=MyRecording filename=dump.jfr 生成记录文件。

得到记录文件之后,用户可以通过 JMC 进行对象创建的热点路径分析。为了更直观的分析,我们提供了经过简单增强后的 JMC 构建,效果图如下:

增加 Object Profiling Tab,可以清楚的分析出热点对象:

增强 Flame 功能,可以按照对象分配大小计算权重:

如何打开火焰图:
1.窗口 | 显示视图 | 其他...
2.选择 Mission Control / Flame View

Serviceability

  1. 迷你Heapdump支持 Alibaba Dragonwell允许您在使用 jmap 工具生成heapdump的时候忽略掉所有原始类型数组的内容,只dump出对象引用等信息,从而缩小生成的Heapdump文件大小。使用时,只需要给-dump子命令添加mini参数即可。

示例命令:

jmap -dump:live,mini,format=b,file=heap121.bin  <PID>
  1. -XX:ArrayAllocationWarningSize=<Size> 增加参数-XX:ArrayAllocationWarningSize=xxx,默认值512M。当分配大对象的大小超过该值的时候,标准输出中打印大数组的分配堆栈,用来排查大数组分配导致的GC问题。

该参数可以通过jinfo动态修改:

// print the allocation stack if more than 1M array allocated
jinfo -flag ArrayAllocationWarningSize=1048576 <pid>
// back to default value(512M)
jinfo -flag ArrayAllocationWarningSize=536870912 <pid>

获取支持

如果您需要获取关于Alibaba Dragonwell的支持信息,请首先查看Alibaba Dragonwell FAQ文档。 或者您也可以发送电子邮件到 dragonwell_use@googlegroups.com 寻找帮助。 您也可以使用钉钉搜索群号35434688加入群聊获取支持