Java 11类数据共享内存

时间:2019-05-24 18:42:43

标签: java jvm

我正在尝试配置许多Java微服务以使用Java 11 openjdk中的class data sharing功能,以减少应用程序的内存占用。我的基本过程如下:

  1. 将至少一定数量的微服务中发生的所有JAR从微服务lib文件夹移动到机器上的单个“共享库”目录中。
  2. 运行一个虚拟程序,该程序使用-Xshare:dump选项在共享库中的每个类上调用class.forName()
  3. 在输出上运行cl4cds tool,以将先前的输出解析为必要的格式
  4. 运行另一个虚拟Java程序以加载每个类并创建共享存档
  5. 使用-Xshare:on启动每个微服务,并使用以共享lib开头的类路径,然后是仍保留在微服务的lib文件夹中的jar。

启动微服务时,我使用-Xlog:class + load = info:file = / loaded-from.txt将类加载输出到日志文件。阅读该文件,我可以看到大约有66%的类是通过“共享对象”加载的,但是通过top命令或/ proc / pid / smaps我看不到任何内存减少的情况。

考虑到我能够在每项80项服务中共享大约66%的类,是否有理由不减少内存?

0 个答案:

没有答案