jjzjj

Java 堆空间 Xmx Xms 参数忽略

我有一个.JAR显然占用了太多内存,并抛出异常“Java堆空间”(或类似的东西)。所以我尝试像这样通过CMD运行.JAR:C:\MyFolder>javaw-jarMyJar.jar-Xms64m-Xmx128m这并没有解决问题。同样的错误。现在,当我检查Windows任务管理器中的“进程”选项卡时,我注意到我的jar进程的内存比我要求的少很多(与不带参数运行它相同)。为什么忽略参数?此外,我认为在进程达到100mb的内存使用时抛出异常。GC是否有可能试图释放内存,这就是导致问题的原因?我可以为GC设置任何参数来防止这种情况发生吗?谢谢,马尔基:) 最佳答案

java - 当通过 -Xmx 分配更多内存时,Sun JVM 会变慢吗?

当有更多内存可用并通过-Xmx使用时,SunJVM是否会变慢?(假设:机器有足够的物理内存,因此虚拟内存交换不是问题。)我问是因为我的生产服务器要进行内存升级。我想将-Xmx值提高到一些颓废。这个想法是为了防止由于我自己的编程错误不时发生的任何堆空间耗尽故障。罕见事件,但如果我有一个令人讨厌的-Xmx值,比如2048mb或更高,我快速发展的webapp可以避免它们。该应用程序受到严密监控,因此会注意到JVM内存消耗的异常峰值,并修复任何缺陷。可能的重要细节:Java6(在64位模式下运行)4核至强RHEL464位Spring,hibernate高磁盘和网络IO编辑:我试图避免发布我的J

java - 当我们设置 Xmx 和 Xms 大小相等时会发生什么

当我们将Xms和Xmx的值设置为相等时,对FullGC或HotSpot中young/tenuredgen的分配有什么影响。它对JRockit有什么影响吗? 最佳答案 最好将这两个参数设置为相同的值。它会阻止JVM调整堆的大小。主要影响是堆的所有其他部分,尤其是代,不会因堆大小调整而改变。这允许更好地理解和配置堆。它还消除了由调整堆大小引起的暂停。唯一不会这样做的场景是客户端Java应用程序,它与许多其他应用程序竞争可用内存。在今天的用例中,您通常可以为java分配固定的内存块(例如在所有服务器应用程序中)

java - Runtime.maxMemory() 和 -Xmx

我原以为Runtime.maxMemory()会准确返回-Xmx,但它返回的值较低。那么它返回什么? 最佳答案 Theinterpretationofthe-XmxflagisVM-dependent.SomeVMs,includingHotSpot,enforcealowerboundontheeffectivevalueofthisoption.TheCCCproposalshouldnothavementionedthe-Xmxflaginthisway.Reference 关于j

一文详解jvm之-Xms -Xmx -Xmn -Xss -XX:PermSize -XX:MaxPermSize等参数的设置和优化以及如何选择垃圾回收器

文章目录1.文章引言2.常见配置汇总2.1XmnXmsXmxXss的区别2.2其他常见配置2.3典型设置举例3.回收器选择3.1吞吐量优先的并行收集器3.2响应时间优先的并发收集器3.3辅助信息4.参考文档1.文章引言我们经常在tomcat的catalina.bat或者catalina.sh中配置如下参数:-vmargs-Xms128M-Xmx512M-XX:PermSize=256M-XX:MaxPermSize=512M当然,除了tomcat,像MyEclipse,eclipse、idea等编辑器中也会配置上述代码,如下我的idea编辑器的配置:我们经常使用这些参数,那么,这些参数有什么含

java - 为什么我可以将 -Xmx 设置为大于 Windows 和 Solaris 机器上的物理和虚拟内存的值?

在具有12GBRAM和33GB虚拟内存(每个任务管理器)的64位Windows机器上,我能够运行Java(1.6.0_03-b05),并且不可能将-Xmx设置为3.5TB,但它35TB失败。它何时起作用以及何时失败背后的逻辑是什么?35TB的错误似乎暗示它试图在启动时保留空间。为什么它会为-Xmx(而不是-Xms)这样做?C:\temp>java-Xmx3500gostestos.arch=amd6413781729280BytesRAMC:\temp>java-Xmx35000gostestErroroccurredduringinitializationofVMCouldnotre

使用多个 -Xmx 选项启动的 Java 守护进程 (hadoop)

在我正在使用但没有管理员权限的hadoop集群上,我看到用于JobTracker、TaskTracker和DataNode的hadoop守护进程启动时指定了两次-Xmx选项。有点像/usr/java/default/bin/java-Dproc_datanode-Xmx1000m...-Xmx128m...现在,在这种情况下,哪个选项优先?是两者中的最大值还是第一个或最后一个?这可能不是hadoop特有的,只是在这种情况下遇到它所以提到它。 最佳答案 正如@fge所建议的,我用一个独立的java程序测试了这个,主要方法如下publi

java - -Xms 和 -Xmx 标志是否保留机器的资源?

我知道JVM进程的-Xms标志是为了让JVM进程使用特定数量的内存来初始化它的进程。并且关于Java应用程序的性能,通常建议在启动应用程序时为-Xms和-Xmx设置相同的值,例如-Xms2048M-Xmx2048M。我很好奇-Xms和-Xmx标志是否意味着JVM进程保留特定数量的内存以防止其他进程在同一机器使用它。这样对吗? 最佳答案 Xmx仅保留虚拟地址空间。Xms实际上分配(提交)它但不一定预先设置它。操作系统对分配的响应方式各不相同。Windows确实允许您保留非常大的地址空间block(Xmx),但不允许过度使用(Xms)。

java - JVM 超出了用 -Xmx 定义的最大内存

我们有一个从Java1.5.0.19升级到Java1.6.0.21的Javawebapp/usr/java/jdk1.6.0_21/bin/java-server-Xms2000m-Xmx3000m-XX:MaxPermSize=256m-Djava.awt.headless=true-Dwg.environment=production-Djava.io.tmpdir=/var/cache/jetty-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=31377-Dcom.sun.management.j

剩余大量内存时出现 java.lang.OutOfMemoryError (94GB/200GB Xmx)

我正在尝试创建大型RDF/HDT文件,这反过来意味着将大型文件读入内存等。现在,这不是真正的问题,因为服务器有516GB内存,其中大约510GB是免费的。我正在使用rdfhdt库来创建文件,效果很好。但是,对于一个特定的文件,我不断收到OutOfMemoryError,没有真正的原因。这是堆栈跟踪:Exceptioninthread"main"java.lang.OutOfMemoryErroratjava.io.ByteArrayOutputStream.hugeCapacity(ByteArrayOutputStream.java:123)atjava.io.ByteArrayOu