相关问题:What are the Xms and Xmx parameters when starting JVMs?
为什么Java程序允许您指定-xms和-xmx?作为一个开发人员,为什么我需要知道/关心我的程序会使用多少cpu/mem呢?
或者同一个问题在不同的角度,为什么不让Python指定这些类型的选项呢?(在Python工作了5年,从来不需要这样做)
这与Python被解释语言和Java是JVM的某种字节码来机器语言有关吗?
或者可能与垃圾收集的方式有关-- Java需要更加谨慎地对待内存消耗?
发布于 2019-01-27 06:04:19
并不是所有的操作系统都以同样的方式向您的运行过程传递内存“压力”,这意味着几乎没有。Java允许您对其内存使用设置一个明确的限制。Python、Go等都有一种比较激进的收集内存的方法。
这是由cgroup复杂的,用于实现Docker和Kubernetes下的容器,这可能会导致malloc()返回NULL,但会导致将信号发送到进程以终止它。
JVM为您提供了一种(通过-Xmx)控制虚拟机内存使用的方法,因为其他系统只是希望它们适合虚拟机的使用。Docker容器中的Java是非常容易管理的,因为Python或Go更容易命中。这些都是“好的”技术,但对容器的限制应该(我希望)推动改进垃圾收集“努力”的表达方式。*\
这感觉就像一个没有答案的人,对此我感到不满意。你可以阅读这篇文章,直到有人发表一些更好、更高票的文章。我会删除这个一旦几个不可避免的暴怒选票出现。;)
发布于 2019-01-27 06:44:16
我认为这是一个关于java设计模式的问题。这真的很奇怪,因为java通常是唯一严格限制内存使用的。而且它也是唯一一个检查异常的。
我相信这些都是因为java的设计者想要设计一种真正适合企业的语言。他们正在尽最大努力确保安全。
以下是关于内存使用限制的答案:https://stackoverflow.com/a/3358383/5588279
对于被检查的异常情况,这是一样的。设计人员希望迫使开发人员处理每一个可预期的异常。
好吧,很难说这是不是好。虽然我不喜欢这个设计,因为设计师似乎把我当作一个菜鸟,但我不得不承认,它确实使java更安全.也许吧?
发布于 2020-09-10 10:15:18
只是一个想法!
https://stackoverflow.com/questions/54385468
复制相似问题