gpt4 book ai didi

Java JVM 堆大小

转载 作者:搜寻专家 更新时间:2023-11-01 01:33:09 25 4
gpt4 key购买 nike

我有一个应用程序在启动时使用以下命令请求特定数量的 RAM。

java -Xms512m -Xmx985m -jar someJarfile.jar

此命令无法在我具有 8.0GB RAM 的计算机上运行,​​因为它无法创建指定大小的对象堆。如果我将最大范围降低到 700MB 以下,它就可以正常工作。

更奇怪的是,当 -Xmx 标志值超过 700m 时,即使执行简单的 java -Xmx768m -version 也会失败。我正在尝试使用 Java 1.7Uu67 32 位(构建 jar 时使用的)甚至更新版本的 Java 1.7 和 event Java 1.8 来运行它。如果最大堆更高并且我使用的是 32 位,我会理解,但它不超过 32 位 java 的 ~1.4GB 上限

是否有我在某个地方遗漏的配置参数会导致这种情况,某种可能会干扰的软件?对于为什么我不能在具有 8.0GB RAM 的机器上分配 700MB RAM 对我来说没有意义。我

我还应该注意到,没有其他正在运行的进程占用了我的所有 RAM。这是 Windows 7 的全新安装。

最佳答案

虽然 700 MB 很低,但这并不奇怪。

Windows 中的 32 位 Windows XP 模拟器的工作方式与 Windows XP 相同,但有其所有限制。这意味着您向操作系统丢失了 2 GB 或潜在的 4 GB。这意味着已经运行的程序会耗尽虚拟内存空间。此外,如果您的程序使用共享库或堆外存储(如直接内存和内存映射文件),这将意味着您丢失了堆的虚拟内存。实际上,无论您实际拥有多少内存,您的应用程序只能使用 1.4 GB 的虚拟内存。

解决此问题的简单方法是使用 64 位 JVM,它在您的 64 位操作系统中运行并且也受到限制,但在 Windows 上只能使用 192 TB 的虚拟内存。

关于Java JVM 堆大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32128809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com