Rozwiązuję problem z dziwnym wyciekiem pamięci. Jest to specyficzne dla Java8, nie dzieje się na 7u79.Nieszczelność pamięci Java - jmap nie pokazuje klas, ale jstat robi
Nie mam dostępu do kodu Java. wiem dokładnie jakie działanie użytkownika powoduje przeciek, wiem, że wyciek jest o zajęciach (nie sterty) i zajęcia obrażając są łatwe do wykrycia z + TraceClassLoading + TraceClassUnloading:
[Loaded com.mastercard.mcwallet.sdk.xml.allservices.ShoppingCartRequest$JaxbAccessorF_oAuthToken from __JVM_DefineClass__]
[Loaded com.mastercard.mcwallet.sdk.... thousand similar classes per one user action... ]
Klasy te wydają się zwiększać wyjście licznika klasy przez jstat -class
:
Loaded Bytes Unloaded Bytes Time
14045 26138.8 0 0.0 110.00 << buggy user action
14675 26754.6 0 0.0 110.05
15300 27364.9 0 0.0 110.10
15304 27370.9 0 0.0 110.11
15304 27370.9 0 0.0 110.11
15304 27370.9 0 0.0 110.11
15306 27374.0 0 0.0 110.11
15306 27374.0 0 0.0 110.11
15306 27374.0 0 0.0 110.11
15306 27374.0 0 0.0 110.11 << buggy user action
15930 27982.2 0 0.0 110.18
16553 28589.3 0 0.0 110.23
16553 28589.3 0 0.0 110.23
Chodzi o to, że te zajęcia są nigdy śmieci zebrane z metaspace, nigdy [Unloaded]
i nie wykazują w jmap -clstats
. Raporty Komenda niższa liczba klas, liczba nie wzrośnie, nie ma żadnych podejrzanych ładowarki klasy:
class_loader classes bytes parent_loader alive? type
<bootstrap> 2574 4493256 null live <internal>
0x0000000087d016d0 1 1471 0x000000008237f088 dead sun/reflect/[email protected]
... some lines omitted ...
0x000000008237f088 6505 12228227 0x0000000080383938 dead org/apache/catalina/loader/[email protected]
... some lines omitted ...
total = 600 14002 25351427 N/A alive=1, dead=599 N/A
Czy ten pierścień dowolny dzwonek lub przynosi żadnych wskazówek mogę przekazać do programistów? Mówią, że nie są w stanie zlokalizować wycieku. Czy mogę powstrzymać ten przeciek przez błąkanie się z opcjami JVM?
Problem tylko z 'MetaSpace'? a co z 'kupą'? i czy możesz również podać statystyki użycia pamięci procesów 'Java'? –
Tylko Metaspace, sterty są stabilne i niepełne. Jakie statystyki dokładnie? – kubanczyk
Mam na myśli, jak szybko rośnie wykorzystanie pamięci procesowej Java? –