首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Eclipse-RCP禁止创建导航历史记录

Eclipse-RCP禁止创建导航历史记录
EN

Stack Overflow用户
提问于 2012-03-06 22:49:34
回答 2查看 306关注 0票数 1

有一个问题:我正在创建一个编辑器,它的EditorInput包含了一个非常大的对象。在创建了几个这样的编辑器之后,我得到了OutOfMemoryError。堆内存分析器显示,有3个EditorHistoryItem类型的对象,它们占据了大约808%的堆空间。(我想,我甚至关闭了以前的编辑器,但它们仍然在内存中)。

我认为,这些EditorHistoryItems-s与eclipse中的导航历史构建有关。那么,我可以禁用导航历史记录吗?或者,在不关闭编辑器的情况下处理大型EditorInput或EditorPart的其他正确方法是什么?

如有任何建议,我们将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-07 05:21:12

好的,让你的对象更小。我非常确定加载几兆字节的对象是不必要的。在打开编辑器并基于用户交互加载/卸载其他对象时,为什么不加载一个相当小的对象作为IEditorInput实现呢(激活编辑器部件,几个表,按下一个按钮,等等)懒洋洋的。

您可以很好地控制用户是否激活编辑器、更改页面(当使用MultipageEditor时)或其他事件,在这些事件中,您可以加载或卸载对象以最小化堆的内存占用。绝对不需要有一个大的IEditorInput对象。

票数 0
EN

Stack Overflow用户

发布于 2012-03-06 23:29:29

根据您使用的编辑器函数的不同,Eclipse的内存中最多可以有5个IEditorInput副本。

虽然这对于< 1,000行的Java类非常有效,但在编辑较大的文件时会耗尽内存。

看一下FileEditorInput的源代码,看看您是否可以编写自己的版本来实现IEditorInput接口,该接口将文件的大部分内容保留在磁盘上,只读取文件的一部分。

最坏的情况是,您必须编写自己的Eclipse编辑器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9585968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档