JVM性能调优
- 1. GraalVM诞生的背景
- 1.1 Java在微服务/云原生时代的困境
- 1.1.1 事实
- 1.1.2 矛盾
本文是按照自己的理解进行笔记总结,如有不正确的地方,还望大佬多多指点纠正,勿喷。
课程内容:
1、Java在云原生时代的困境及解决方案
2、GraalIVM安装及入门
3、使用GraalVM实战演练AOT
4、惊现C2编译器BUG
5、GraalVM编译器性能对比实战
6、GraalVM与Spring6
1. GraalVM诞生的背景
1.1 Java在微服务/云原生时代的困境
1.1.1 事实
Java总体上是面向大规模、长时间的服务端应用而设计的。
严(luo)谨(suo)的语法利于约束所有人写出较一致的代码,利于软件规模的提升;
但是像即时编译器(JT)、性能优化、垃圾回收等有代表性的特征都是面向程序长时间运行设计的,需要一段时间来达到最佳性能,才能享受硬件规模提升带来的红利。
1.1.2 矛盾
在微服务的背景下,提倡服务围绕业务能力构建,不再追求实现上的严谨一致;
1、单个微服务就不再需要再面对数十、数百GB乃至TB的内存;
2、有了高可用的服务集群,也无须追求单个服务要7×24小时不可间断地运行,它们随时可以中断和更新。
所以微服务对应用的容器化(Docker)亲和度〈包容量、内存消耗等)、启动速度、达到最高性能的时间等方面提出了新的要求,这些恰恰是Java的弱项。
比如: 现在启动一个微服务项目(Docker运行6个子服务),动不动就1分钟,如下图: