java.lang.OutOfMemoryError即使有足够的RAM可用

时间:2014-08-17 10:49:14

标签: java eclipse eclipse-plugin out-of-memory eclipse-rcp

我正在尝试以编程方式在eclipse中打开一个文件。该文件的关联编辑器是在外部插件中定义的,我无法控制源代码。

我使用下面显示的代码段打开文件。但是我总是得到

异常:从线程" AWT-Windows"

中的UncaughtExceptionHandler抛出java.lang.OutOfMemoryError

我试图增加可用于eclipse运行配置的内存,但这并没有帮助。有什么想法会导致这种情况吗?

    private void openFiles(final IPath filePath ) {
    PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {

        @Override
        public void run() {

            IWorkspace workspace = ResourcesPlugin.getWorkspace();
            IFile iFileInput = workspace.getRoot().getFileForLocation(filePath);

            IEditorInput editorInput = new FileEditorInput(iFileInput);

            IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
            IWorkbenchPage page = window.getActivePage();
            try {
                iFileInput.refreshLocal(IResource.DEPTH_INFINITE, null);
            } catch (CoreException e1) {
                e1.printStackTrace();
            }
            try {
                   String editorID = "xxxxx";
                   IDE.openEditor(page, editorInput, editorID);
            } catch (PartInitException e) {
                e.printStackTrace();
            }

        }
    });
}

2 个答案:

答案 0 :(得分:1)

你在没有数据的情况下猜测。

获取像VisualVM这样的分析器,看看内存发生了什么。

Java VM使用世代内存模型。您可以充分设置大量物理RAM和堆空间,但如果perm gen填满,仍会出现OOM错误。看看是否发生了这种情况。

答案 1 :(得分:1)

尝试增加堆内存大小:

如果您开始使用命令行

java -Xms<initial heap size> -Xmx<maximum heap size>

您也可以通过eclipse完成,只需在eclipse.ini中添加以下行或通过eclipse gui配置:

-Xms1024m   
-Xmx1024m   
-XX:MaxPermSize=256M