【问题标题】:Limit on heap size [closed]堆大小限制[关闭]
【发布时间】:2014-08-25 03:49:45
【问题描述】:

如果我错了,请纠正我,但是在 C/C++ 堆中没有限制,你不需要传递任何参数来增加它。

那么为什么java对堆有限制呢?

【问题讨论】:

  • 可能与 Java 有垃圾收集器而 C 和 C++ 都没有的事实有关。
  • @Rufflewind 什么……但是为什么你需要限制它?为什么不让它爆炸记忆
  • C/C++ 堆确实有限制。已安装内存/可用虚拟内存的限制。以先到者为准。由于 GC,Java 有一个更有趣的限制,但它确实会根据需要增长,直到内存不足。就像任何其他程序一样。
  • 哦,所以这个限制,以及增加它的论据,是针对 GC 的吗?现在有意义了
  • Java VM 是“安全的”。它为程序创建沙箱。因此,当您为 VM 加注星标时,您可以定义空间的最大限制(Xmx 和 Xms 选项)。这将防止服务器分配太多空间,并且会破坏 VM 而不是整个服务器。例如,Erlang Web 服务器会在需要时吃掉所有内存,并且可以挂起计算机导致重新启动,但 JMV 不会,因此您可以轻松地使用脚本重新启动它。

标签: java c memory heap-memory


【解决方案1】:

有几个原因:

  • 首先要有最小的堆大小,以防止启动缓慢
  • 存在最大堆大小,以便 GC 知道何时开始执行它的工作,没有它会更加困难(但可行,您只需要考虑不同的启发式方法,例如分配数量等)
  • 最大堆大小还可以防止 JVM 占用机器上的所有资源,这是一件非常好的事情

【讨论】:

    猜你喜欢
    • 2010-09-11
    • 2020-09-05
    • 2011-01-19
    • 2010-12-25
    • 1970-01-01
    • 2013-12-20
    • 2011-07-31
    • 1970-01-01
    相关资源
    最近更新 更多