2012-03-06 15 views
1

次の問題があります。エディタを作成していますが、EditorInputにはかなり大きなオブジェクトが含まれています。このようなエディタのカップルを作成した後、私はOutOfMemoryErrorを取得しました。ヒープメモリアナライザは、ヒープスペースの約80.8%を占めるEditorHistoryItem型の3つのオブジェクトがあることを示しました。 (私は以前のエディタを閉じてしまったと思うが、彼らはまだ記憶に残っていると思う)。Eclipse-RCPのナビゲーション履歴の作成を無効にする

私は、これらのEditorHistoryItemsは日食のナビゲーション履歴の作成に関連していると思います。では、ナビゲーション履歴を無効にすることはできますか?エディタを閉じずに大きなEditorInputやEditorPartを処分する正しい方法は何でしょうか?

アドバイスをいただければ幸いです。

答えて

0

さて、オブジェクトを小さくしてください。私はかなりの数メガバイトのオブジェクトをロードする必要はないと確信しています。エディタを開き、ユーザインタラクション(Editor-Partの起動、いくつかのtabl、ボタンの押下など)に基づいて追加のオブジェクトをロード/アンロードするときにIEditorInputの実装としてかなり小さなオブジェクトを読み込まないのはなぜですか?

ヒープのフットプリントを最小限に抑えるためにオブジェクトをロードまたはアンロードできるエディタのアクティブ化、ページの変更(MultipageEditorを使用しているとき)、またはその他のイベントの通知については、大きなIEditorInputオブジェクトを持つ必要は全くありません。

+0

あなたの答えをありがとう!私はEditorInputをリファクタリングし、大きなオブジェクトを削除しました。それは間違いなく歴史の問題を解決する、ありがとう。 –

0

使用しているエディタ機能によって、Eclipseにはメモリ内に最大5つのコピー(IEditorInput)を含めることができます。

これは、1000行のJavaクラスの<ではうまく機能しますが、大きなファイルを編集するときはメモリが不足しています。

FileEditorInputのソースコードを見て、ほとんどのファイルをディスクに保存してファイルの一部を読み込むIEditorInputインターフェイスを実装している独自のバージョンを作成できるかどうかを確認してください。

最悪の場合、独自のEclipseエディタを作成する必要があります。

+0

私はおそらくよく問題を記述していないでしょう - 私はすでにEditorPartを拡張する独自のエディタを持っていますので、IEditorInputを実装するEditorInputオブジェクトを持っています。エディタを開くと、内部にEditorInput型のEditorHistoryItem型のオブジェクトが作成されます。エディター間のナビゲーション可能性をサポートするために行われていると仮定します。しかし、私はそれを必要とせず、私のEditorInputをメモリに残さないようにこの可能性を無効にしたいと思っています。 –

+0

@Alexander Gavrilov:あなたが何を求めているのか分かります。しかし、Eclipseエディタ・クラス・ライブラリ全体を書き換えたくない場合は、IEditorInputを操作することに限られます。 –

関連する問題