Ich habe eine Speicherabbilddatei, die fast 5000 Instanzen eines bestimmten Objekts enthält. Diese Objekte sollen in einen DB geschrieben werden, und die Art, wie ich das mache, besteht darin, eine OQL-Abfrage in jvisualvm zu schreiben, um eine Zeichenkette zu erzeugen, die beispielsweise als SQL-Einfügung dient
Wenn ich dies über OQL ausführe, bekomme ich ein Ergebnis wie folgt -
%Vor%usw.
Da jedoch die Gesamtzahl der Instanzen groß ist (etwa 5000), zeigt JvisvisualVM nur etwa 100 von ihnen an. und dann mit einer Meldung "Zu viele Ergebnisse. Bitte verfeinern Sie Ihre Abfrage."
Ich kann die Abfrage nicht verfeinern, da ich alle Instanzen auf diese Weise analysieren muss. Gibt es eine Möglichkeit, wie ich JvisvisualVM bitten kann, mir alle Instanzen zu zeigen und nicht die Anzahl der Ergebnisse einzuschränken?
Ich sehe auch, dass Jvisual vm die ersten 100 Instanzen ohne Filter zeigt, ist es möglich, die nächsten 100 Instanzen usw. per OQL-Abfrage zu bekommen?
Danke
Ich konnte in jvisualVm keine Einstellungen finden, um die Ergebnismenge zu erhöhen. Vielleicht ist es so nicht möglich. Es sieht aus wie ein hart codiertes Limit in Jlvisualvm Code-Basis. Ref: Ссылка
finden Sie unten Schnipsel:
%Vor%und
%Vor%Jetzt der interessante Teil, der Workaround für Ihr Problem.
Betrachten Sie die folgende Klasse:
%Vor%sage jetzt, dass ich 105 Objekte im Speicher für diese Klasse habe, die in einer Liste wie folgt gespeichert sind:
%Vor%und ich muss erreichen, was Sie tun.
Um nun diese 105 Objekte anzuzeigen, anstatt alle Ergebnismengen aufzulisten, würde ich lieber über alle Objekte iterieren und eine einzige Zeichenfolge erstellen, die alle SQL-Abfragen enthält, die durch eine neue Zeile getrennt sind. Dazu müssen Sie ein ähnliches OQL-Skript in Query Editor
aufrufen.
und das Ergebnis in Query Results
wird sein:
Ändern Sie einfach das OQL-Skript, um es Ihren Anforderungen anzupassen.
HINWEIS: In der Klasse Xyz war das Feld idXyz intentionally not set as id
, da in diesem Fall itr.id
die mit dieser Instanz verknüpfte Objekt-ID zurückgibt.
für mehr über OQL-Methoden ref: Ссылка
Jetzt ist es möglich (v 1.7), von netbeans/profiler.heapwalker/src/org/netbeans/modules/profiler/heapwalk/OQLController.java
:
Mein Hilfscode (wenn Sie limit
- dann unlimited) überspringen:
UPDATE Ein weiterer Trick, den ich gefunden habe, ist die Zuweisung eines Wertes an die Variable:
%Vor% Das ermittelte Objekt hat die Schnittstelle next()
/ hasNext()
, die vom Viewer verwendet wird. Standardmäßig wurden 100 Einträge angezeigt. Aber nächsten Anruf nur:
angezeigt nächste 100 Einträge und so weiter ...!