Tomcat 未启动 : Not able to reserve enough space for object heap

标签 tomcat jvm heap-memory catalina

启动tomcat时报错

Not able to reserve enough space for Object Heap

Not able to create Java virtual machine

我用谷歌搜索了一下,这似乎是一个常见问题,但到处都提到的修复方法对我不起作用。

每个提到这个问题的地方都说“设置 CATALINA_HOME 或 JAVA_OPTS”。我为两个变量都设置了值,并为 head 和 permsize 保留了足够的空间,但我仍然面临同样的问题。

在较轻的节点上:我已验证有足够的空间可供分配。

我正在使用 32 位堆栈,我正在为 JAVA_OPTS 和 CATALINA_OPTS 设置以下值

-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m

最佳答案

32 位 Windows 上的 Java 需要一个连续的内存块 - windows32 不能提供太大的内存块,AFAIK 最大 1.5G(这是从 XP 时代回来的内存),但只有在内存不是太碎片化的情况下才可以已经(是的,我知道,现在听起来很奇怪)。

因此,在启动其他应用程序之前,您可能会首先尝试重新启动机器并启动 java/tomcat。另一种选择是提供更少的内存(尝试需要多少与可用多少)。

此外,对于生产设置,我总是建议让 -Xms 和 -Xmx 具有相同的大小:如果出现问题,您会立即得到结果,而且已经分配了连续的内存块。

关于Tomcat 未启动 : Not able to reserve enough space for object heap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14023940/

相关文章:

java - 如何通过java应用程序清除tomcat服务器缓存?

java - 如何通过 "java.lang.String"解决 java.lang.OutOfMemoryError 错误,由 "<system class loader>"Eclipse 内存分析器加载

c++ - 函数返回数组地址而不是它的值

c - Linux 堆结构和 malloc() 和 free() 的行为

java - HttpConnection维护Session

tomcat - IBM Sterling Configurator与Websphere Commerce的集成

TomCat 延迟存储日志

java - 是否可以从堆转储中实例化 jvm?

linux - 执行 grails -version 时在 VM 初始化期间发生错误

java - 为什么 Java 编译器会生成奇怪的局部变量和堆栈映射框架,我如何使用它们来可靠地确定变量类型?