我真的很困惑。Xmx根据java文档,是允许的最大堆大小。Xms是所需的最小Java堆大小,在JVM启动时分配。在32位JVM(4GB内存)上,java-Xmx1536MHelloWorld给出无法分配足够内存的错误。在64位JVM(4GBRam)上,java-Xmx20GHelloWorld工作得很好。但我什至没有分配那么多虚拟或物理内存。所以由此得出结论,Java32位在JVM启动时分配了1536M,而Java64位不是。为什么?一个简单的HelloWorld不需要1536M即可运行。我只是指定1536M是最大值,而不是需要它。解释一下吗? 最佳答案
我正在Kubernetes中运行一个容器化的Java应用程序。为了让jvm根据容器规范预留内存,-XX:+UnlockExperimentalVMOptions-XX:+UseCGroupMemoryLimitForHeap标志必须设置。如果这两个标志都与Xms和Xmx标志一起设置,jvm的行为会是什么?一个标志会覆盖另一个吗?例如,如果我们有java-XX:+UnlockExperimentalVMOptions-XX:+UseCGroupMemoryLimitForHeap-Xms-Xms2500M-Xmx2500M-jarmyjar.jar在容器限制4Gi的请求和4Gi的响应的P
我正在编写一个项目(用Java编写),教授说我们不允许使用超过200m的类我使用-Xmx50m将堆栈内存限制为50m(绝对确定),但根据顶部,它仍在使用300m我尝试运行EclipseMemoryAnalyzer它只报告了26m这可能都是堆栈上的内存吗?我很确定我永远不会超过大约300个方法调用深度(是的,这是一个递归DFS搜索),所以这意味着每个堆栈帧都在使用几乎是一兆字节,这似乎令人难以置信。程序是单线程的。有谁知道我可能会减少内存使用的其他地方?另外,如何检查/限制堆栈使用的内存量?更新:我现在正在使用以下JVM选项但没有任何效果(根据顶部仍然大约300m):-Xss104k-X
我们知道我们可以在window->preferences->java->installedjres->edit->defaultvmarguments中设置-Xmx1024M在eclipse。但是当我把这个项目打包成一个可运行的jar文件时,通过java-jarA.jar运行jar时如何设置-Xmx1024M?非常感谢! 最佳答案 不幸的是,现有答案在一个关键点上是错误的。-Xmx必须传递给Java运行时环境,而不是传递给执行的jar。错误:java-jarJavaApplication.jar-Xmx1024m正确:java-Xm
本着提问的精神Java:WhydoesMaxPermSizeexist?,我想问一下为什么OracleJVM对其内存分配池的大小使用了一个固定的上限。默认为物理RAM的1/4(有上限和下限);因此,如果您有一个需要大量内存的应用程序,您必须手动更改限制(参数-Xmx),否则您的应用程序将表现不佳,甚至可能因OutOfMemoryError而崩溃。为什么这个固定的限制甚至存在?为什么JVM不像大多数操作系统上的本地程序那样按需分配内存?这将解决Java软件的一整类常见问题(只需Google看看网上有多少关于通过设置-Xmx解决问题的提示)。编辑:一些答案指出,这将保护系统的其余部分免
有最大值吗?您可以将Xmx设置为的大小?我将它设置为1024m并且Eclipse可以正常打开。当我将其设置为1024以上时,eclipse无法打开,并且出现错误“jvm已终止。退出代码=-1”...我这样做是因为我不断收到“java.lang.OutOfMemoryError:Javaheapspace”。我正在读取一个35.5Mb的.txt文件,当它只是使用“while((line=reader.readLine())!=null)”循环读取文件时会发生此错误。我原以为1024mb就足够了。谁能帮帮我? 最佳答案 是的,有一个最大
在提出这个问题时,Docker看起来足够新,以至于在网上没有这个问题的答案。我找到的唯一地方是thisarticle作者在其中说很难,就是这样。 最佳答案 请注意,在docker-compose.yml文件中-您需要省略双引号:environment:-JVM_OPTS=-Xmx12g-Xms12g-XX:MaxPermSize=1024m或environment:-CATALINA_OPTS=-Xmx12g-Xms12g-XX:MaxPermSize=1024m 关于java-如何在D
首先,我有一个8gb内存的盒子,所以我怀疑总内存是问题所在。此应用程序在6GB或更少的机器上运行良好。我正在尝试在Eclipse的运行配置中的“VM参数”下使用-Xmx3G保留3GB的空间。每次我尝试保留超过1500mb时,我都会收到此错误:“虚拟机初始化过程中发生错误;无法为对象堆保留足够的空间”使用-Xmx3G这是怎么回事? 最佳答案 难道你在那台机器上使用的是32位jvm? 关于java-“ErroroccurredduringinitializationofVM;Couldnot
这个问题在这里已经有了答案:Whatarethe-Xmsand-XmxparameterswhenstartingJVM?(5个回答)关闭5年前。java-Xmx1024m文件名-Xmx是什么意思? 最佳答案 请看这里:JavaToolDoc,它说,-XmxnSpecifythemaximumsize,inbytes,ofthememoryallocationpool.Thisvaluemustamultipleof1024greaterthan2MB.AppendtheletterkorKtoindicatekilobytes,o