0

我有:

  1. 64位赢7
  2. 64 位 JROCKIT 1.6
  3. 64位日食

Eclipse.ini:

-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
512m
-vmargs
-Xms512m
-Xmx1024m
-Xmn256m
-XX:MaxPermSize=512m
-XX:GCTimeRatio=2
-XX:ParallelGCThreads=8 
-XX:+UseParNewGC
-XX:MaxGCPauseMillis=2000 
-XX:+DisableExplicitGC
-Dsun.lang.ClassLoader.allowArraySyntax=true
-Dweblogic.home=D:\Oracle\Middleware10.3.4\wlserver_10.3
-Dharvester.home=D:\Oracle\Middleware10.3.4\Oracle_OSB1\harvester
-Dosb.home=D:\Oracle\Middleware10.3.4\Oracle_OSB1
-Dosgi.bundlefile.limit=750
-Dosgi.nl=en_US

我想增加堆大小,但是当我-Xmx1024m增加到-Xmx2048m

它说:

创建 Java 虚拟机失败。

然后我再次-vm向我的 eclipse.ini 引入了参数

-vm
D:\Java\jrockit-jdk1.6.0_26-R28.1.4-4.0.1\jre\bin\jrockit\jvm.dll

(之前-vmargs)它说:

无法加载 JNI 共享库。

该怎么办?如何增加 Eclipse 的堆大小?

4

1 回答 1

3

与您的断言相反,您拥有 32 位版本的 Eclipse。我可以通过 eclipse.ini 文件中的 org.eclipse.equinox.launcher 参考来判断。一个 64 位的 Eclipse 会将此文件命名为“...win32.x86_64...”而不是“win32.x86...”。

由于 Eclipse 具有本地组件,因此您必须将 32 位 JVM 与 32 位 Eclipse 一起使用。您在尝试强制使用 64 位 JVM 时看到“无法加载 JNI 共享库”问题,因为安装中的 Eclipse 本机组件与 64 位 JVM 不兼容。

就能够增加安装中的堆而言......您不太可能能够将堆增加到 2048m。启动时,JVM 尝试根据最大堆大小保留一个连续的内存块。32 位地址空间总共为 4G,但它被固定在不同位置的内存中的各种系统 DLL 分解。最大连续内存会因系统而异,但找到连续的 2048m 块是非常不寻常的。

我对此不是 100% 肯定,但我听说 Jrockit 没有连续内存要求。如果是这样,您可能可以通过像您尝试的那样切换到 Jrockit 来解决您的问题,但您需要安装 32 位版本的 Jrockit。

当然,更好的解决方案是迁移到 64 位版本的 Eclipse。看起来您的 Eclipse 安装来自 OSB 安装程序。这些仅在 32 位版本中可用,但我相信 OSB 安装程序支持将 OSB 插件安装到包含 Oracle Enterprise Pack for Eclipse (OEPE) 的现有 Eclipse 安装中。OEPE 提供了预构建的 64 位 Eclipse 工具包,但您需要确定 OSB 插件需要哪个版本的 Eclipse 和 OEPE(它将是一个特定版本)。

祝你好运。

更新:刚刚记住了一些别的东西......有时如果您使用 javaw.exe 而不是 jvm.dll ,使用更高的 Xmx 设置运行会更容易,因为这两个入口点之间的内存管理是不同的。要尝试此操作,请找到 32 位 JVM 的 javaw.exe 的路径并通过 -vm 开关指定它,就像您尝试在问题中指定替代 jvm.dll 一样。

于 2012-06-20T17:40:53.700 回答