Tomcat 7 PermGen Space 或创建 JVM 失败

Tomcat 7 PermGen Space or Failed to Create JVM

我目前正在寻找有关此的任何帮助。
我正在尝试启动 Tomcat 7 服务器,但我只得到 PermGen Space 异常。

我试图更改 XXMaxPermSize 值,但是当我更改它时,我在启动 Eclipse 时得到一个弹出窗口:

"Failed to Create the JVM"

我之前就遇到过这个错误(Failed to Create the JVM),突然出现。从来没有改变我的日食的配置,但有一天,这发生了,需要改变我的 .ini 文件中的内存分配。

运行 Tomcat 6 完全没问题,但我想 Tomcat 7 更耗电

这是我的 Eclipse .ini :

-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502
-vm
C:/Program Files (x86)/Java/jdk1.6.0_45/bin
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms384m
-Xmx1024m

问题来自 launcher.XXMaxPermSize
无法增加该值,否则 Eclipse 将无法启动。
它以 256M 启动,但以 512 崩溃...

这不可能是硬件限制,因为我的 PC 有 8G 内存。

有什么想法吗?我错过了一些明显的东西吗?

注意 eclipse.ini 中的参数声明顺序,我已经注意到有些参数并不是到处都支持,例如,您可能想尝试移动文件底部的 -vm 行 (在 -vmargs 之后)

在 Windows 上,默认情况下,32 位进程最多只能寻址 2 GiB 的内存(即使您有更多的 RAM)。

使用 512 MiB perm,加上 1 GiB 堆以及 JVM/库开销,您可能会超过这个。

如果您从命令行运行这样做:

java -version

您将看到如下输出:

java version "1.x.0_xx"
Java(TM) SE Runtime Environment (build 1.x.0_xx-bxx)
Java HotSpot(TM) Client VM (build 25.31-b07, mixed mode, sharing)

64 位 JVM 看起来像这样:

java version "1.x.0_xx"
Java(TM) SE Runtime Environment (build 1.x.0_xx-bxx)
Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)

如果它在 64 位系统上,请升级到 64 位 JVM(尽管可以配置 Windows 以在 64 位系统上允许更大的 32 位进程,64-位 JVM 是首选方法)。

有关详细信息,请参阅此答案:

您还应该知道,您可以为烫发请求任意值 space(300、384、412 等)。通过一些实验,您可能会发现您有足够的 space 以 2 GiB 的限制开始该过程。

问题已解决: