Ich habe eigentlich zwei Fragen, aber sie sind so eine Art so hier gehen sie wie ein ...Faul und latente TreeViewer Fragen
Wie, um sicherzustellen, Garbage Collection von Baumknoten, die derzeit nicht TreeViewer
angezeigt bezogen (SWT.VIRTUAL
) unter Verwendung von und ILazeTreeContentProvider
? Wenn ein Knoten 5000 Kinder hat, werden diese, sobald sie vom Viewer angezeigt werden, nie wieder losgelassen. daher Out of Memory Error, wenn Ihr Baum eine große Anzahl von Knoten und Blättern und nicht genügend Heap-Größe hat. Gibt es eine Art von Best Practice, wie Speicherleckagen vermieden werden können, die durch nie geschlossene Ansichten verursacht werden, die einen Treeviewer mit großen Datenmengen (Hunderttausende von Objekten oder sogar Millionen) enthalten? Vielleicht gibt es vielleicht eine Callback-Schnittstelle, die eine größere Flexibilität mit Viewer/Content-Provider-Elementen ermöglicht?
Ist es möglich, DEFFERED zu kombinieren (DeferredTreeContentManager
) und faul (ILazyTreeContentProvider
) Laden für einen einzelnen TreeViewer
(SWT.VIRTUAL
)? So viel ich verstehe, indem ich Beispiele und APIs betrachte, ist es nur möglich, entweder einen zu einer gegebenen Zeit, aber nicht beide gleichzeitig zu verwenden, z. , rufen Sie NUR die sichtbaren untergeordneten Elemente für einen bestimmten Knoten ab und holen Sie sie mithilfe der Job-API in einem separaten Thread. Was mich stört ist, dass der aufgeschobene Ansatz ALLE Kinder lädt. In einem anderen Thread laden Sie zwar alle Elemente , obwohl nur eine minimale Teilmenge gleichzeitig angezeigt wird.
Ich kann Code-Beispiele auf meine Fragen geben, wenn erforderlich ...
ich zur Zeit mit denen selbst bin zu kämpfen, so, wenn ich mit etwas in der Zwischenzeit kommen verwalten werde ich es gerne hier teilen.
Danke!
Grüße, Svilen
Für das Lazy Loading melden die Viewer dem Provider, dass ein bestimmtes Element angezeigt wird (durch Scrollen oder Expandieren). Die aktuellen verzögerten Implementierungen können leicht unter Verwendung eines Jobs in den Inhaltsanbietermethoden erreicht werden. das Problem mit beiden Methoden, warum sie exklusiv sein könnten: das Lazy-Laden setzt voraus, dass Sie die Elementanzahl im Voraus kennen und den Inhalt des Viewers in der Zeit ersetzen, in der der Inhalt angezeigt wird. Sie möchten den Inhalt nicht laden (z. B. von einer Remore-Ressource), jedes Mal, wenn der Benutzer etwas scrollt oder erweitert. – benez