Python与Java的-xms和-xmx

Python与Java的-xms和-xmx,java,python,Java,Python,相关问题: 为什么Java程序允许您指定-xms和-xmx?作为一名开发人员,为什么我需要知道/关心我的程序将提前使用多少cpu/mem 或者不同角度的同一个问题,为什么不让Python指定这些类型的选项?在Python中工作了5年,从来没有这样做过 它是否与Python被解释为一种语言,而Java是JVM到机器语言的某种字节码有关? 或者可能与垃圾收集的方式不同有关,Java需要更加警惕内存消耗?并非所有操作系统都以相同的方式向运行中的进程传递内存压力,这意味着几乎永远不会。Java允许您明确

相关问题:

为什么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则更容易管理。这些都是很好的技术,但我希望对容器的限制能够推动垃圾收集工作的改进\


这感觉像是没有答案,对此我很不满。你可以阅读这篇文章,直到有人发布了一些人们喜欢的东西,比如better and up vote。一旦出现一些不可避免的不满票,我将删除此项

并非所有操作系统都以相同的方式将内存压力传递给正在运行的进程,这意味着几乎永远不会。Java允许您明确限制其内存使用。Python、Go和其他人有一种收集内存的有点激进的方法

cgroups用于实现Docker和Kubernetes下的容器,这使问题变得复杂,它可能会导致malloc返回NULL,但会导致向进程发送信号以终止它

FWIW,JVM通过-Xmx为您提供了一种方法来控制虚拟机的内存使用,其他系统只希望这样做。Docker容器中的Java是非常易于管理的,而Python或Go则更容易管理。这些都是很好的技术,但我希望对容器的限制能够推动垃圾收集工作的改进\


这感觉像是没有答案,对此我很不满。你可以阅读这篇文章,直到有人发布了一些人们喜欢的东西,比如better and up vote。一旦出现一些不可避免的不满票,我将删除此项

我认为这是一个关于java设计模式的问题。这真的很奇怪,因为java几乎是唯一严格限制其内存使用的。而且它也是唯一一个检查异常的

我相信这些都是因为java的设计者想要设计一种真正适合企业的语言。他们正在尽最大努力使它安全

以下是关于内存使用限制的答案:

对于checked异常,这是相同的。设计师想迫使开发人员处理 每一个预期的例外


好吧,很难说这是否好。虽然我不喜欢这种设计,因为设计师似乎把我当成了一个傻瓜,但我必须承认,它确实让java变得更安全了。。。也许吧?

我认为这是一个关于java设计模式的问题。这真的很奇怪,因为java几乎是唯一严格限制其内存使用的。而且它也是唯一一个检查异常的

我相信这些都是因为java的设计者想要设计一种真正适合企业的语言。他们正在尽最大努力使它安全

以下是关于内存使用限制的答案:

对于checked异常,这是相同的。设计师想迫使开发人员处理 每一个预期的例外

好吧,很难说这是否好。虽然我不喜欢这种设计,因为设计师似乎把我当成了一个傻瓜,但我必须承认,它确实让java变得更安全了。。。也许吧

我看到Python有三代,即第0代、第1代和第2代,这三代与Java的年轻代、老年代和永久代非常相似。 正如我们所知,这些开关限制了Java应用程序的内存使用。 类似地,在Python中,虽然我没有看到等效的,或者可能有。。但是我看到gc.set_threshold设置了一个阈值。 可能是阈值可以设置为微调,通过导致一个可接受的GCs“再次频繁的GCs”不好,但这一切归结为微调,通过在Dev env中玩来获得适合自己应用的阈值。 只是一个想法

我看到Python有三代,即第三代 0、1和2与Java的young、old和perm gen非常相似,但并不等同。 正如我们所知,这些开关限制了Java应用程序的内存使用。 类似地,在Python中,虽然我没有看到等效的,或者可能有。。但是我看到gc.set_threshold设置了一个阈值。 可能是阈值可以设置为微调,通过导致一个可接受的GCs“再次频繁的GCs”不好,但这一切归结为微调,通过在Dev env中玩来获得适合自己应用的阈值。
只是一个想法

这是一个很好的答案。它只是表明这两个系统的设计是为了不同地处理垃圾收集。Python会在运行时进行清理。如果内存不足,你真的无能为力。Java通常有一些空间可以清理,当它达到极限时,可以继续运行。limit标志有助于Java生存,而它根本无助于Python。这是一个非常好的答案。它只是表明这两个系统的设计是为了不同地处理垃圾收集。Python会在运行时进行清理。如果内存不足,你真的无能为力。Java通常有一些空间可以清理,当它达到极限时,可以继续运行。limit标志有助于Java生存,而它根本无助于Python。