2016-04-20 19 views
7

Ich habe ein Problem schließt ich im Profiler finden kann, aber ich habe keine Ahnung, wie es zu beheben. Nachdem ich die Anwendung geladen habe, bekomme ich dieses Sägezahnwellenmuster, das Programm ist im Leerlauf, verbraucht aber Speicher, wie Sie hier sehen können.Java RMI tcp Speicherproblem

memory allocation in time

Wenn ich die Sampler-Thread Speicherzuordnungen überprüft ich sah, dass RMI TCP-Verbindung zu meinem eth0 (172.16.20.51) Speicher bei einem halben Megabyte pro Sekunde verbraucht (413.213), die in der Produktion führt zu log ‚stoppen Die Welt 'GC :-( sampler thread memory Ich konnte den Grund dieses Problems nicht verfolgen, da ich nicht weiß, welcher Port es von welchem ​​Thread ist, auf der anderen Seite versuchte ich, mein Glas mit -com zu laufen. sun.management.jmxremote.authenticate = false -Dcom.sun.management.jmxremote.ssl = false Flaggen, aber es war nicht hilfreich. Jede Idee wird b Ich schätze es.

+0

in Ihrem Snapshot ist es Pool-6-Thread-1, die alles verbraucht –

+0

Was ist mit Ihrem Heap-Histogramm? Können wir einen Schnappschuss davon haben? –

+0

ein Heap-Dump hilft auch in diesem Fall –

Antwort

10

Ich weiß, das ist eine alte Post, aber da ich über sie mit dem gleichen Problem gestolpert, könnte eine Antwort auch andere helfen ..

Die RMI TCP Anschlussgewinde ist, wie virtuelle VM Proben Ihre Speichernutzung. Ein hohes Allocated Bytes/s ist also das, was Sie beim Profiling erwarten, und weist (nicht unbedingt) auf ein Problem mit Ihrer Anwendung hin. Siehe zum Beispiel this SO question.

In Bezug auf Heapspeicherauszüge Visual VM hat eine 'Heap Dump' Taste auf dem Monitor und Sampler Registerkarten, die eine Heap Dump-Datei speichert. Sie können dies zum Beispiel in die kostenlose Eclipse Memory Analyzer (MAT) laden, um Speicherlecks usw. zu untersuchen.