Diagramas de gerenciamento de memória de processo Java

Existem muitos artigos e diagramas sobre esse assunto na Internet, porém, em minha opinião, nenhum deles permite que você tenha uma ideia geral do uso da memória no processo Java. E sem uma compreensão geral, é difícil encontrar soluções para problemas específicos de memória em sistemas complexos. Como resultado, decidi postar meus diagramas.





Diagrama simplificado do uso de memória Java de um processo:





Diagrama simplificado do uso de memória Java de um processo
Diagrama simplificado do uso de memória Java de um processo

Diagrama detalhado do uso de memória Java de um processo por alguns parâmetros:





Diagrama detalhado do uso de memória Java de um processo por alguns parâmetros
Java
JVM Copy Paste

-XX:+UnlockDiagnosticVMOptions 

-XX:+PrintFlagsFinal 

-XX:+PrintGCDetails

-Xlog:gc+heap

-XX:+HeapDumpOnOutOfMemoryError





-XX:+UseSerialGC

-XX:+UseParallelGC

-XX:+UseConcMarkSweepGC

-XX:+UseParNewGC 

-XX:+UseG1GC

-XX:+UseShenandoahGC

-XX:+UseZGC

-XX:+UseEpsilonGC 





-XX:MinRAMPercentage

-XX:MaxRAMPercentage-Xms

-Xmx

-XX:-AdaptiveSizePolicy





-XX:MetaspaceSize

-XX:MaxMetaspaceSize

-XX:MinMetaspaceFreeRatio

-XX:MaxMetaspaceFreeRatio





-n jvmJavaOSStackSize

-Xss

-XX:VmThreadStackSize

-XX:CompilerThreadStackSize





-XX:+PrintGCDetails 

-XX:+TraceClassUnloading 

-XX:+TraceClassLoading

-XX:CompressedClassSpaceSize

-XX:-UseCompressedClassPointers





-XX:+PrintStringTableStatistics

-XX:StringTableSize

-XX:+UseStringDeduplication





-XX:+PrintCodeCache

-XX:InitialCodeCacheSize

-XX:ReservedCodeCacheSize 

-XX:CodeCacheExpansionSize 





-n jvmNativeStackSize 





-XX:MaxDirectMemorySize





-XX:NativeMemoryTracking=off | summary | detail  

-XX:+PrintNMTStatistics 

-XX:-AutoShutdownNMT





-XX:+PrintCompilation





-XX:+UnlockDiagnosticVMOptions 

-XX:+LogCompilation

-XX:+PrintFlagsFinal





-XX:CICompilerCount

-XX:CompileThresholdn

-XX:-TieredCompilation





-Dcom.sun.management.jmxremote 

-Dcom.sun.management.jmxremote.authenticate=false 

-Dcom.sun.management.jmxremote.ssl=false 

-Dcom.sun.management.jmxremote.port=9099 

-Dcom.sun.management.jmxremote.rmi.port=9099 

-Dcom.sun.management.jmxremote.local.only=false 

-Djava.rmi.server.hostname=0.0.0.0 

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000





JProfiler

VisualVM

JConsole

Java Flight Recorder

async-profiler

JDK Mission Control

jstack

jmap





Esses diagramas não têm como objetivo fornecer conhecimento completo, mas podem ser um ponto de partida para explorar o tópico mais profundamente, preencher lacunas de conhecimento, ajustar a JVM e localizar o problema no sistema atual.








All Articles