Python 与 Java 的 -xms 和 -xmx

eal*_*eon 2 python java

相关问题:启动JVM时的Xms和Xmx参数是什么?

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

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

这与 Python 是解释性语言、Java 是某种字节码、JVM 到机器语言有关吗?
或者也许与垃圾收集的方式不同有关,Java 需要更加警惕内存消耗?

Sam*_*Sam 5

并非所有操作系统都以相同的方式向正在运行的进程传达内存“压力”,这意味着几乎从不。Java 允许您对其内存使用设置明确的限制。Python、Go 和其他语言有一种有点激进的内存收集方法。

cgroups 使这变得复杂,cgroups 用于在 Docker 和 Kubernetes 下实现容器,它可能会导致malloc()返回 NULL,但会导致向您的进程发送信号以杀死它。

FWIW,JVM 为您提供了一种方法(通过-Xmx)来控制虚拟机的内存使用,而其他系统只是希望它们适合。Docker 容器中的 Java 非常易于管理,而 Python 或 Go 则更容易管理。这些都是“好的”技术,但对容器的限制应该(我希望)推动垃圾收集“努力”表达方式的改进。:\

这感觉像是一个没有答案的问题,对此我很不满意。您可以阅读本文,直到有人发布人们更喜欢的内容并进行投票。一旦出现一些不可避免的脾气暴躁的投票,我就会删除它。;)