果然吃内存,一个简单的 Java 程序就占用了 250M 内存

查看 71|回复 5
作者:karottc   
之前一直在用 Java 写 企业级代码,并没有很在意 java 的内存问题,比如多个/少个一两百兆就没关心。
平时用 java 写的直接运行就结束的代码,基本都是本地电脑运行,也没有发现内存问题。
直到最近,用 java 写了一个简单的程序,运行在我的 1C1G 的腾讯云机器上,才发现 java 确实内存大户。
程序的功能为:
[ol]
  • 每 10 分钟抓取某个链接的数据
  • 抓取到的内容和 mysql 里面已有的内容作对比
  • 存在就更新,不存在就插入到 mysql 中
  • 每天早上 10 点发送一个企业微信通知
    [/ol]
    这就是这个程序的所有功能,由于用到了定时任务和操作 mysql, 所以我第一个版直接用了 springboot ,平时工作也用整起来快。
    用到的库为:okhttp + gson + mybaits + jdbc + logback
    程序运行稳定之后内存占用:250M
    这个简单的功能这个内存占用实在是太大了。
    然后我觉得可能是 springboot 的原因,所以我写了第二版:
    用了 okhttp + gson + mybatis + jdbc
    去掉了框架和 logback, 直接用 print 输出 log , 定时任务也直接用了 while(true) + sleep 来实现。
    这版程序稳定运行之后内存占用:90M
    上面两版没有加任何优化参数,就是 java -jar xxx.jar 运行。
    java 版本:java21
    java21 了,还是这个内存表现,失望啊。
  • medivh   
    试试 openj9
    powerman   
    加钱吧,Java 整个生态来讲,早就不是设计之初,应用于嵌入式设备 微波炉 洗衣机 等玩意的语言了,你要是从头撸起来,httpclient + 自己手撸一个 json 解析器 + jdbc template ,其实内存也用不了多少
    powerman   
    而且 Java 目标就是 作为一个企业级的后台开发生态工具了,早就不适合 嵌入式 等资源受限的场景
    cmdOptionKana   
    没有完美的语言,总不能没有短板吧,要是 Java 那么完美,其他语言也没生存空间了。
    angrylid   
    哪里多了,这么多年一直都是这个占用,不要睁着眼睛乱说,write once run anywhere 很难的。
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部