実際には2つの質問がありますが、それらは一種の関連性があるため、ここでは1つにします...
TreeViewer
( SWT.VIRTUAL
) とを使用して現在表示されていないツリー ノードのガベージ コレクションを確実に行う方法はILazeTreeContentProvider
? ノードに 5000 の子がある場合、それらがビューアーによって表示されると決して手放されないため、ツリーに多数のノードとリーフがあり、十分なヒープ サイズがない場合、メモリ不足エラーが発生します。大量のデータ (数十万または数百万のオブジェクト) を持つツリービューアーを保持している閉じられていないビューによって引き起こされるメモリ リークを回避するためのベスト プラクティスはありますか? おそらく、ビューアー/コンテンツ プロバイダー要素をより柔軟に使用できるコールバック インターフェイスがいくつかあるのではないでしょうか?
単一の( ) に対して、deffered ( DeferredTreeContentManager
) と lazy ( ILazyTreeContentProvider
) の読み込みを組み合わせることは可能ですか? 例と API を見て理解した限りでは、特定の時点でどちらか一方しか使用できず、両方を組み合わせて使用することはできません。たとえば、特定のノードの可視の子のみをフェッチし、Job を使用して別のスレッドでそれらをフェッチします。 API。私を悩ませているのは、遅延アプローチがすべての子をロードすることです。別のスレッドではありますが、一度に最小限のサブセットのみが表示される場合でも、すべての要素をロードします。TreeViewer
SWT.VIRTUAL
必要に応じて、質問にコード例を提供できます...
私は現在それらに苦労しているので、その間に何かを思い付くことができれば、ここで喜んで共有します.
ありがとう!
よろしく、 スヴィレン