如何增加Eclipse的堆大小?

时间:2012-06-20 12:22:08

标签: eclipse jvm jvm-arguments

我有:

  1. 64bit Win 7
  2. 64bit JROCKIT 1.6
  3. 64bit Eclipse
  4. 的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的堆大小?

1 个答案:

答案 0 :(得分: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一样。