CDS大小对启动性能的影响

时间:2019-08-23 20:51:26

标签: java performance jvm

为了改进应用程序的启动,我们使用Java的类数据共享(CDS)功能。当前,它非常有效,因为我们加载了很多类,尤其是在应用程序的开始阶段。

前提条件:

  • 我们在具有CFS的Linux上运行

  • 在设备/应用程序启动期间,存在cpu / io竞争情况

  • 我们在应用程序中有几个测量点,它们会触发一个事件,以表示某些功能已正确加载。

  • 创建包含7_000个已加载类列表的CDS存档

  • 创建包含9_000个已加载类列表的CDS存档

结果:

  • 使用已加载7_000个类的存档时,到达第一点平均需要14秒。 50秒后将达到秒。

  • 当使用归档了9_000个已加载类的归档文件时,将在15秒(平均/ 1秒回归)后到达第一个点。第二次测量将加快7秒。

问题: 第一个事件的一秒钟回归

我理解为什么第二点会更快达到。这是因为许多类将放置在CDS归档中,并且在类加载时不需要任何链接,验证等。但是我不明白为什么与具有7_000类的档案相比,第一点将遭受一秒钟的回归。

什么原因可能导致回归?

假设

  • 更多IO? (需要通过内核跟踪进行验证)

0 个答案:

没有答案