gpt4 book ai didi

java - 启动时jvm问题

转载 作者:行者123 更新时间:2023-12-01 07:42:13 24 4
gpt4 key购买 nike

我可以将最大内存设置为 1000,但不能超过此值,如果我设置的内存超过此值,则会引发以下错误。

VM 初始化期间发生错误无法为对象堆保留足够的空间无法创建 Java 虚拟机。

我的问题是,为什么jvm在启动时寻找最大内存?

提前致谢。

最佳答案

Sun JVM 需要为其堆提供连续的内存区域。使用 Sysinternals 套件中的工具 vmmap,您可以准确地检查 Java 进程的内存布局。为此,请编写一个简单的 Java 程序,如下所示:

public class MemoryLayout {
public static void main(String[] args) throws java.io.IOException {
System.in.read();
}
}

编译该程序并使用大堆设置运行它

javac MemoryLayout.java
java -Xmx1000m -Xms1000m MemoryLayout

然后,启动vmmap,选择java进程,寻找大于1000000k的黄色内存区域。这是 JVM 堆。再往下看,你最终会发现一个紫色的行,表明有一个DLL文件被映射。此 DLL 文件可防止 JVM 堆变大。

如果您知道自己在做什么,则可以重新设置该 DLL,以便将其加载到不同的地址。 Microsoft 提供了一个名为 rebase.exe 的工具,作为 Microsoft Platform SDK 的一部分(我的版本是 5.2.3790.1830)。

关于java - 启动时jvm问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2810638/

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