【发布时间】:2014-01-29 04:55:01
【问题描述】:
根据我的经验,使用大约 10 MB 常驻内存的 C 程序在翻译成 Java 时可能使用大约 40 到 50 MB,而在 Clojure 或 Scala 中大约需要 100 MB。我的问题是这个 JVM 内存开销是否线性扩展?如果 C 版本使用 1 GB,Java 版本是否需要 4 GB?还是 JVM 内存开销更多是一个常数因素,以至于 1 GB 的 C 程序在 Java 中可能只使用 1.5 GB?
我知道我可以对此进行基准测试,但我认为听取人们关于生产中 JVM 内存使用的经验会比人工基准测试提供更多信息,根据设计方式,人工基准测试可能偏向于偏向任一结果。
【问题讨论】:
-
我认为优秀的垃圾收集 java 应该显示出类似算法更少的内存利用率。但这在很大程度上取决于您正在运行的确切程序
-
强烈反对意见
-
@LogicChains 虽然它不是一个论坛(就像SO it's Q&A site)Quora 可能更适合。
-
我的机器上有 24Gb 的空间,还有很多可用空间,但我需要为我的网站上成千上万的访问者提供服务 - 所以分配速度对我来说很重要。为什么要关心确切的堆大小?
-
认真的模组? 不可能这是基于意见的。它是 100% 可测量的。仅仅因为它很复杂并不能使它基于意见。一个好的答案可以很容易地突出关键变量(实现差异、类开销、不同的数据类型等)。投票重新开放。