- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我的 Java 应用程序通过运行“java -jar j.jar”进程来运行另一个 Java 应用程序。众所周知,J.jar 会根据给定的数据集使用大量内存,并且经常会获得 OutOfMemoryError 堆。所以我想在它上面使用-Xmx,这样我就可以分配尽可能多的内存(或接近)。我正在考虑获取系统上的总内存,然后在 -Xmx 中指定其中的 80-90%。
我的问题有什么解决办法吗?而且,我的解决方案听起来如何?
编辑:我无法减少内存消耗,因为正在使用的内存是 Java 的内置 pack200 压缩,我用它来打包一些 JAR 文件。
最佳答案
在 32 位窗口上 -XmX 的限制是 -Xmx1500m。共享库阻碍了更大的堆。您需要大约 2Gb 的 RAM 才能执行此操作。
在非 Windows 操作系统上,您可以做得更大,而 64 位 JVM 可以做得更多。
Windows XP 不会让您拥有超过 3Gb 的 RAM(不管您是否拥有 4Gb 物理内存,从 XP SP3 开始)Vista 可能与 YMMV 不同。
我已经在 64 位 Linux 上的 64 位 JVM 上尝试了 -Xmx4000M,它很好。考虑到我有 6Gb 的物理内存,这不是一个大要求。
您的 80% 想法很有趣,但我的测试系统运行的百分比比没有不良影响的要高。 (只要你不尝试做任何其他事情。)
另一位评论者是对的,分页出 JVM 的内存镜像并不快。后来的 JVM 在这方面做得更好(但他们也有更好的垃圾收集器)
如果你不能减少内存消耗——我知道这有多难——那么就拥有大量的物理内存并分配其中的大部分。
关于Java -Xmx,系统最大内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1190837/
我真的很困惑。 Xmx 根据 java 文档,是允许的最大堆大小。 Xms 是所需的最小 Java 堆大小,在 JVM 启动时分配。 在 32 位 JVM(4GB 内存)上,java -Xmx1536
我有一个疑问。让我们假设我有两个参数传递给 JVM: -Xms256mb -Xmx1024mb 在程序开始时分配了 256MB。接下来,创建一些对象,JVM 进程尝试分配更多内存。假设 JVM 需要分
我试图在Windows机器上运行Elasticsearch,但是出现错误“无法创建Java虚拟机”。 Windows 10、32GB RAM,64位 JVM 1.8.0_201 Elasticsear
我正在使用一个名为 Talend 的 BI 数据集成工具,该工具使用 Java 在 Eclipse 上构建。 在启 Action 业时,它说 Could not create the Java vir
我使用 -Xms256m and -Xmx256m JVM options 将初始和最大 Java 堆大小设置为 256MB . GC 日志(使用 -XX:+PrintHeapAtGC)表明堆大小为
我正在使用 java -Xmx60g 命令运行以下代码。 每个阵列应该在 8.5GB 左右,总共 17GB。该机器总共有 64GB,其中有 63GB“免费”。它打印 DONE DECLARING RI
这SO answer澄清了一些关于 -Xmx JVM 标志的事情。为了进行实验,我做了以下事情: import java.util.List; import java.util.ArrayList;
我有很多 JVM 在 Linux Redhat 上运行,具有 32GB 的物理内存和 32GB 的虚拟内存。这些 JVM 配置为具有超过 32GB 的 Xmx 总值,并且可能让 Linux 使用了它的
我们知道我们可以在 window->preferences->java->installed jres->edit->default vm arguments 中设置 -Xmx1024M 在 ecli
我的 Java 应用程序通过运行“java -jar j.jar”进程来运行另一个 Java 应用程序。众所周知,J.jar 会根据给定的数据集使用大量内存,并且经常会获得 OutOfMemoryEr
有没有办法限制javac的最大虚拟内存使用量?运行 java 时,我可以使用“-XmxAm”(其中 A 是可用兆字节数)运行它来限制它。 javac 有这样的东西吗?谢谢。 最佳答案 您可以使用 -J
问题 我有一个包含大量公式的 .xlsx 文件。我想将此文件转换为新的 .xlsx 文件,其中所有公式都替换为其绝对值。为什么? 可能与这个问题无关。 我做了什么? 我的目标是在尽可能少的堆内存中执行
我正在 Fedora 上运行 jre 6u24 (Linux xxx 2.6.33.7.2-rt30 #1 SMP PREEMPT RT Mon Mar 21 00:50:23 UTC 2011 i6
在阅读了诸如this和JEP-346之类的答案之后,我意识到G1确实将内存释放回了操作系统。 但是,它是否将内存释放回操作系统,甚至导致当前的内存使用量可能降至初始堆内存以下(即,在此JEP之前,对于
我有两台运行 Mac OS X El Capitan 和 Ubuntu 16.04 LTS 的计算机。两者都安装了 Java SDK 1.8.0_101。 当我尝试在 Ubuntu 上启动游戏服务器时
当我尝试使用 -Xms32m -Xmx128m 加载列表中的 39MB 文本时出现内存不足错误。所以我开始一点一点地增加Xmx,直到加载成功,发现我至少需要Xmx170m才能加载内存中的39MB文件
JacORB 通知服务的 JVM (java 1.6) 消耗内存超过 -Xmx 值,设置为 240MB。 Windows 任务管理器中的 java exe 超过 900MB Privatebytes,
在 JDK 8 ,默认最大堆大小为 1/4th of the physical memory or 1GB 并且可以使用 -Xmx 开关覆盖它: You can override this defau
我在我的应用程序中遇到了臭名昭著的 OutOfMemoryException,我没有简单地增加可用的堆空间量,而是试图查看问题所在,以防万一,出现某种泄漏从我的应用程序。 我添加了 JVM 参数 -X
在 java 中,我们可以使用 xmx 参数定义进程可以占用的最大内存。对于 perm gen,我们可以定义 MaxPermSize。 perm gen 空间也是使用分配的内存的一部分xmx参数。 那
我是一名优秀的程序员,十分优秀!