Python与Java的-xms和-xmx

2024-05-10 19:52:12 发布

您现在位置:Python中文网/ 问答频道 /正文

相关问题:What are the Xms and Xmx parameters when starting JVMs?

为什么Java程序允许您指定-xms和-xmx?作为一个开发人员,为什么我需要知道/关心我的程序将预先使用多少cpu/mem?

或者同一个问题在不同的角度,为什么不让Python指定这些类型的选项呢?(在Python工作了5年,从来没有这样做过)

这与Python是解释语言和Java是JVM到机器语言的某种字节码有关吗?
或者可能与垃圾收集的方式不同有关,Java需要更加小心内存消耗?


Tags: andthe程序开发人员javawhatareparameters
2条回答

并不是所有的操作系统都会以同样的方式将内存“压力”传递给正在运行的进程,这意味着几乎永远不会。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更安全。。。也许 吧?

相关问题 更多 >