飞码网-免费源码博客分享网站

点击这里给我发消息

OpenJ9在Spring应用中的优势|-Java教程

飞码网-免费源码博客分享网站 爱上飞码网—https://www.codefrees.com— 飞码网-matlab-python-C++ 爱上飞码网—https://www.codefrees.com— 飞码网-免费源码博客分享网站

概述

Eclipse OpenJ9 JVM作为本地云运行时的一部分部署时,可为Spring应用程序带来巨大的好处。OpenJ9通过共享类和对内存占用的积极关注实现了内存开销和启动时间的改进。

要受益于启动时间的缩短,请通过设置以下JVM选项来启用OpenJ9的SharedClasses缓存(启用dynamicAOT):

-Xshareclasses -Xscmx50M -Xquickstart

动手探索收益

要探索这些内存开销和启动时间对自己有帮助,您可以运行Spring的petclinic演示,使用Docker对OpenJDK和OpenJ9进行测试,从而使您自己了解两个运行时之间的差异。我们提供了Dockerfile的集合,以使此操作变得非常简单。

内存占用

您可以按照以下步骤检查petclinic应用程序的内存占用量:

  1. 获取Dockerfiles。

  2. 生成每个docker映像:

    docker build -f Dockerfile.openj9 -t=demo.openj9
    docker build -f Dockerfile.openjdk -t=demo.openjdk
    
  3. 在备用命令提示符下,运行OpenJ9映像,并记下启动时间:

    docker run --rm -it demo.openj9
    
  4. 在另一个备用命令提示符下,运行OpenJDK映像,并记下启动时间:

    docker run --rm -it demo.openjdk
    
  5. 最后,从另一个命令提示符运行:

    docker stats
    
  6. 清理:

    docker ps
    docker kill <id>
    

这是的输出docker stats,显示OpenJ9(af0c33faf180第一行中的)仅使用OpenJDK在运行Spring的petclinic示例应用程序时使用的内存的大约1/3:

CONTAINER ID     NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
af0c33faf180     serene_tereshkova   0.95%               153.7MiB / 1.952GiB   7.69%               718B / 0B           85.3MB / 4.1kB      42
8abb2874bed9     pedantic_darwin     0.65%               469.2MiB / 1.952GiB   23.48%              718B / 0B           80.7MB / 0B         36

内存占用一直是OpenJ9 JVM的关注重点,而OpenJ9较小的原因很多:

  • 类元数据的大小
  • 较小的默认堆大小
  • 不太积极的Java堆扩展
  • 在开发过程中,始终保持一致的重点是保持较小的内存占用量。

启动时间

您可以按照以下步骤检查petclinic应用程序的启动时间:

  1. 获取Dockerfiles。

  2. 构建docker镜像:

    docker build -f Dockerfile.openj9.cold -t=demo.openj9.cold
    
  3. 启动docker镜像:

    docker run --rm -it demo.openj9.cold
    

    该映像启用了共享类,以便可以将OpenJ9的类元数据(J9ROMClass)以及AOT和JIT提示保存在缓存中。

    由于正在填充缓存,因此在“冷”运行中启动通常会比较慢。

  4. 在缓存已满的情况下构建新映像。

  5. 使用以下命令保存最后一张图片:

    docker commit <id> demo.openj9.warm
    
  6. 在缓存已满的情况下运行映像:

    docker run --rm -it demo.openj9.warm
    

占用空间应与早期运行相同,但启动速度更快。这主要是由于AOT重定位比JIT编译快得多(大约10到100倍)。

飞码网-免费源码博客分享网站 爱上飞码网—https://www.codefrees.com— 飞码网-matlab-python-C++ 爱上飞码网—https://www.codefrees.com— 飞码网-免费源码博客分享网站
赞 ()
内容页底部广告位3
留言与评论(共有 0 条评论)
   
验证码: