为何 Java 内存占用比.Net 内存占用高这么多?

2020-09-02 22:33:18 +08:00
 crclz

无用户访问情况下,执行docker stats命令,发现如下数据:

容器 1,.Net Core,基于 alpine 镜像,内存占用 40.65MiB
容器 2,.Net Core,基于 debian 镜像,内存占用 36.75MiB
容器 3,spring boot,基于 j9 默认 tag,内存占用 529.1MiB

容器 4,mysql,默认 tag 镜像,内存占用: 372.2MiB
容器 5,postgres,基于 alpine 镜像,内存占用:5.504MiB

为什么 java vs .net ,postgres vs mysql,内存占用会出现如此大的差距?

注:Java 项目和.net 项目的规模差不多。

11602 次点击
所在节点    Java
99 条回复
chendy
2020-09-02 23:19:10 +08:00
java 不给参数默认拿 1/4 内存,其他不了解
KentY
2020-09-02 23:42:41 +08:00
`Java 项目和.net 项目的规模差不多` 内存占用跟项目规模关系并不大..
zhuangzhuang1988
2020-09-02 23:50:11 +08:00
我也很奇怪 为何 java 有各种内存调优, .net 没有
而且调优 第一步 不是去找代码瓶颈么, 烂代码 再怎么调优都没用

ps: https://www.zhihu.com/question/365482363
momocraft
2020-09-02 23:57:12 +08:00
postrgres 才 5g? 沒負載會這麼少嗎?
momocraft
2020-09-02 23:57:31 +08:00
#4 應爲 "才 5m"
soji18
2020-09-03 01:59:20 +08:00
@zhuangzhuang1988 #3 都不愿意用 Oracle JDK 呗
Levi233
2020-09-03 03:14:52 +08:00
为什么要拿 spring boot 和别人比?
Mithril
2020-09-03 05:40:40 +08:00
看你拿什么比,ASP.NET Core 性能是要比 Spring 好不少的。而且 Spring 本身就是怪兽啊,跑起来消耗大很正常。
wanguorui123
2020-09-03 08:01:38 +08:00
Spring 运用了大量的缓存技术,减少创建对象和分配内存的时间。
crclz
2020-09-03 08:06:44 +08:00
@Levi233 因为 spring boot 和 asp.net core 非常类似。jpa 和 ef 也功能差不多。

@momocraft 确认过了, 就是 5M,后面还出现 3M 。
opengps
2020-09-03 08:18:59 +08:00
项目规模怎么算的?代码行数吗?
我最近,有个数据库相关的静态类我嫌弃占内存过大,改成每次 new 一个了,从 100M 下降到 40M
cheng6563
2020-09-03 08:19:04 +08:00
就是有这么多
zjsxwc
2020-09-03 08:34:42 +08:00
都无用户访问了,内存不占白不占
ratel
2020-09-03 09:15:55 +08:00
JVM 参数有关系吧,最小堆内存是不是设置得比较大,就算不用也会被 JVM 占用这么多内存的
passerbytiny
2020-09-03 09:26:43 +08:00
java 运行在虚拟机上,mysql 及时有优化也是 java 开发的。.net 、postgres 是直接运行在操作系统上。

但其实上面的是废话,JVM 是可以自己设置内存参数的,要自己调教——低了会爆,高了浪费。另一方面,JVM 的内存,是不能自由缩放的(只能按比例缩放几个等级)。因此为了怕爆,默认设置一般都不低( 1/2 物理内存,你那个 512M 应该已经是手动调低了)。
CoderGeek
2020-09-03 09:56:01 +08:00
jvm 起来就得占多少 - -
sonice
2020-09-03 10:00:49 +08:00
我觉得你可以空跑来做比较,单独启动一个空的进程(启动就 sleep ),这样再来看内存占用,可能会更直观一点。
qW7bo2FbzbC0
2020-09-03 10:01:35 +08:00
@passerbytiny #15 不太懂,.net 不是虚拟机吗? mysql 是 c/c++混合开发的吧
raptor
2020-09-03 10:08:50 +08:00
pgsql 的内存占用本来就比 mysql 强很多。

我曾经在 256M 内存机器上用 pgsql+nginx 跑 wordpress,非常稳。换 mysql 就算 512M 也很困难。
kanepan19
2020-09-03 10:09:47 +08:00
内存对公司来说,不是白菜价吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/703698

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX