graalvm 拯救了 Java 的启动速度,但没法拯救 Java 的内存占用

查看 84|回复 8
作者:keepRun   
前几年,我一直期待 graalvm 把 java 编译成 native image 可以大幅减少 java 的内存占用,直到今天我用 graalvm 把我一个简单的 spring + spring mvc + mybatis plus + mysql 的小项目编译成 native 后(使用 g1gc ,配置最大堆内存 64m ),一测内存占用,好家伙,占用 184m ,优化了个寂寞,直接正常用 jvm 占用也就 200m 。启动速度确实快,285ms 即可完全启动。
我彻底死心了,java 对于请求量小的小型 web 项目内存消耗太大了,以后还是转投 nodejs 、golang 搞这种小项目吧,java 内存消耗太大了。
个人感觉云原生与微服务时代,java 官方对于资源占用问题解决速度还是太慢了,我阅读了 openjdk 社区的几乎所有的 jep ,发现起码未来 5 年,java 在解决内存占用问题上是不积极的。

Java, 占用, graalvm, 内存

keepRun
OP
  
再提下官方进展:
官方在推进 java 使用值类型,这可以提高 java 执行效率(变量分配到栈上而不是堆,降低 gc 压力,提高 cpu 执行效率),推测由于逃逸分析更方便,一定程度上会降低一点内存占用,这个预计下一个 lts 会上线。
project leyden:探索渐进式约束 java 的动态特性换取更好的执行效率、性能占用、启动速度等问题,这个进度太慢了,起码得等到下下个 lts 。
其它的看过也忘了,基本上语法上不会有大的改动,优化主要在 jvm\gc 上,没太多亮点。
bthulu   
内存从来都不是问题, 内存只会越来越便宜.
keepRun
OP
  
@bthulu 虽然如此,但总有内存敏感型场景
salmon5   
小内存推荐 Serial GC...
kneo   
再耐心一点,未来可期。
keepRun
OP
  
@salmon5 我测试过,Serial GC 内存占用更大
keepRun
OP
  
@kneo 已经结束辣😁,看看 jep ,未来 5 年内存占用问题是难有大的变化的
xiangyuecn   
你的实际业务估计也就占用个 10-20M 内存,跟 java 本身关系不大,100M 内存也能跑很多业务+流量,就看你愿不愿意手撸 java 代码
您需要登录后才可以回帖 登录 | 立即注册

返回顶部