Ich kann in der Heapdump-Datei sehen, dass die String-Klasse Speicher erschöpft, aber woher weiß ich speziell, was diese Zeichenfolgen sind?Wie überprüfe ich speziell, welche Java-Zeichenketten beibehalten werden, was zu Speicherlecks führt?
0
A
Antwort
3
Wenn Sie VisualVM
verwenden, können Sie einige OQL
Abfrage verwenden, um die Daten in Java-Heap, die Sie suchen, zu lesen. Ein Befehl, der Ihren Bedarf anpassen kann, ist:
select {instance: s, content: s.toString()} from java.lang.String s
where /java/(s.toString())
Sie viel mehr finden Sie hier: https://visualvm.java.net/oqlhelp.html
0
ich simuliert dies mit einer kleinen Feder Boot-Anwendung und Eclipse Memory Analyzer. Der Heap-Dump wurde in MAT erstellt, aber Sie können auch den bereits erstellten Heap-Dump öffnen.
Wenn Sie die Heapdump MAT automatisch öffnen zeigt Ihnen den Verdacht hegt, die viel Speicher verwenden:
Wenn Sie die Details öffnen können Sie die String
Instanzen und ihre Werte sehen (gelb markiert in meinem Screenshot) in dem Accumulated Objects in Dominator Tree
Kurzinformation genannt Abschnitt: Sie OQL aus MAT laufen:
Verwandte Themen
- 1. Statisches C++ - Array, das zu Speicherlecks führt?
- 2. Wie finde ich heraus, welche Visual Studio-Erweiterung Speicherlecks verursacht?
- 3. Wie verursachen Schließungen Speicherlecks?
- 4. Warum führt die Verwendung von Ursachen in CCR zu Speicherlecks?
- 5. Wie überprüfe ich welche BLAS in meinem Ubuntu System ist?
- 6. Wie überprüfe ich, welche Registerkarten mit jquery tabs aktiv sind?
- 7. Welche Steuerelemente haben ViewState beibehalten?
- 8. Was zurückgegeben werden soll, wenn ein NSURL zu null führt
- 9. WP8 massive Speicherlecks
- 10. Wie überprüfe ich Pelican-Variablen
- 11. Wie kann ich Speicherlecks in Firefox vermeiden?
- 12. Wie überprüfe ich, ob Benutzereingaben im Array gefunden werden?
- 13. Was sollte ich speziell in Cloud-basierten mobilen Anwendungen testen?
- 14. Was ist nicht aktiviert und wie überprüfe ich es?
- 15. Versteckte Speicherlecks
- 16. Chef: Wie überprüfe ich, ob ein Service installiert ist?
- 17. Wird es zu Speicherlecks kommen?
- 18. Wie erkenne ich Speicherlecks in meinem Webportal?
- 19. Wie überprüfe ich, ob eine IsolatedStorageFile existiert?
- 20. rails 3.0.12 Wie überprüfe ich, welche Version von activerecord ich habe?
- 21. Wie überprüfe ich Texteingabe Toast Benachrichtigung C#
- 22. Wie lange werden Metriken für SNS in CloudWatch beibehalten?
- 23. Wie überprüfe ich die Bazel-Version? tatsächlich
- 24. iOS Wie überprüfe ich, ob gerade telefoniert
- 25. Zend_Db_Table: Was passiert, wenn der Einsatz zu einem Fehler führt?
- 26. Wie überprüfe ich die MySQL-Integrität?
- 27. Was sind NSubstitute Einschränkungen, speziell vs MOQ?
- 28. Wie überprüfe ich, ob Server.GetLastError() = System.Web.UI.ViewStateException?
- 29. Git: wie dauerhafte parallele Zweige beibehalten werden
- 30. Wie Benutzereinstellungen bei Deinstallation beibehalten werden
Das sieht nützlich aus! Kann ich eine dümmer Frage stellen, wo führe ich diese Abfrage aus? Gibt es eine Konsole in JVisualVm oder so? –
@OneTwoThree: Es gibt sowohl Befehlszeilen- als auch visuelle Werkzeuge, Sie können die vollständige Dokumentation auf ihrer Website sehen. Es ist ein sehr nützliches Werkzeug – Pooya