[英]Python vs Java's -xms and -xmx
相关问题: 启动 JVM 时的 Xms 和 Xmx 参数是什么?
为什么 Java 程序允许您指定 -xms 和 -xmx? 作为开发人员,为什么我需要知道/担心我的程序将使用多少 cpu/mem?
或者不同角度的同一个问题,为什么不让Python指定这些类型的选项? (在 Python 中工作了 5 年,从来没有这样做过)
这是否与 Python 是解释性语言和 Java 是某种字节码到 JVM 到机器语言有关?
或者也许与垃圾收集的不同方式有关,Java 需要更加警惕内存消耗?
并非所有操作系统都以相同的方式将内存“压力”传达给您正在运行的进程,这意味着几乎从不。 Java 允许您明确限制其内存使用。 Python、Go 和其他一些收集内存的方法有些激进。
这被cgroups复杂化,用于在Docker和Kubernetes下实现容器,它可能会注意到导致malloc()
返回NULL,但会导致向您的进程发送信号以杀死它。
FWIW,JVM 为您提供了一种方法(通过-Xmx
)来控制虚拟机的内存使用情况,而其他系统只是希望它们适合。 Docker 容器中的 Java 是非常易于管理的,而 Python 或 Go 则更容易出错。 这些都是“好”的技术,但是对容器的限制应该(我希望)推动改进垃圾收集“努力”的表达方式。 :\\
这感觉像是没有答案,为此我不满意。 你可以阅读这篇文章,直到有人发布了一些人们喜欢更好和投票的东西。 一旦出现一些不可避免的抱怨票,我就会删除它。 ;)
我认为这是一个关于java设计模式的问题。 这真的很奇怪,因为 java 主要是唯一严格限制其内存使用的。 它也是唯一一个检查异常的。
我相信这些都是因为java的设计者想要设计一种真正适合企业的语言。 他们正在尽最大努力使其安全。
这是关于内存使用限制的答案: https : //stackoverflow.com/a/3358383/5588279
对于受检异常,也是如此。 设计人员希望强制开发人员处理所有可预期的异常。
好吧,很难说这是否好。 虽然我不喜欢这种设计,因为设计师似乎把我当作菜鸟,但我不得不承认它确实让 java 变得更安全......也许吧?
只是一个想法!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.