gpt4 book ai didi

java - 为什么需要指定 Java 堆大小?

转载 作者:太空狗 更新时间:2023-10-29 22:34:50 26 4
gpt4 key购买 nike

我一直很疑惑,为什么Java需要你手动设置堆大小?我的印象是,用其他语言编写的程序只会根据程序运行的需要分配尽可能多的内存,直到操作系统无法再分配为止。

在 Java 世界中,我们需要设置堆、栈和永久代的大小。虽然这很简单,但忘记将这些增加到“足够大”的数字是我看到服务器出现故障的第一个原因。

为什么不能告诉 Java 随着时间的推移根据需要增长堆/堆栈/permgen?

最佳答案

三个原因:

  1. 因为 Java 旨在成为一种用于编写网络应用程序的语言。让网络应用程序接管所有机器资源通常被认为不是一个好主意。
  2. 因为 Java 是垃圾收集器。除了指定内存上限外,堆大小也会触发垃圾回收。本质上你是在说“你可以使用这么多,但是当你达到那个限制时你必须整理一下”。
  3. 有许多类应用程序您确实希望限制 Java 进程使用的内存量,例如当两个进程的内存不足时,其他进程继续运行更为重要。
  4. 因为能够限制堆大小是一项功能。如果您喜欢进程可以拥有无​​限内存的方法(与提到的其他语言一样),那么您始终可以将堆限制设置为超过它可能获得的数量。如果你想限制堆大小,你可以这样做。其他语言只有其中一种可能的行为,因此灵 active 较低。

关于java - 为什么需要指定 Java 堆大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3516664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com