>  기사  >  Java  >  Java Virtual Machine Learning - 메모리 조정

Java Virtual Machine Learning - 메모리 조정

黄舟
黄舟원래의
2017-02-17 10:32:001579검색

JVM 튜닝은 주로 각 세대의 크기 제어 및 GC 전략을 포함한 메모리 관리 튜닝을 위한 것입니다. GC는 가비지 컬렉션을 시작할 때 애플리케이션 스레드를 일시 중지하므로 성능에 심각한 영향을 미치기 때문에 튜닝의 목적은 GC로 인해 발생하는 애플리케이션 스레드의 일시 중지 시간을 최소화하고 Full GC 횟수를 줄이는 것입니다.

세대 크기 조정

가장 중요한 매개변수: -Xms, -Xmx, -Xmn, -XX: SurvivorRatio, -XX:MaxTenuringThreshold, -XX:PermSize, -XX:MaxPermSize

-Xms, -Xmx는 일반적으로 런타임 중에 JVM 메모리가 지속적으로 확장되는 것을 방지하기 위해 동일한 값으로 설정됩니다. 이 값은 JVM 힙이 사용할 수 있는 최대 메모리를 결정합니다.

-Xmn은 신세대 공간의 크기를 결정합니다. 신세대 Eden, S0, S1의 세 영역 비율은 -XX:SurvivorRatio로 제어할 수 있습니다. 값이 4이면 다음을 의미합니다. Eden :S0:S1 = 4:3:3 )

-XX:MaxTenuringThreshold는 개수를 제어합니다. Minor GC 이후 객체가 Old Age에 진입하는 횟수, 이 매개변수는 Serial Serial GC에서만 유효합니다.

-XX:PermSize, -XX:MaxPermSize는 메소드 영역의 크기를 제어하는 ​​데 사용되며 일반적으로 동일한 값으로 설정됩니다.

1. 신세대 크기를 너무 작게 설정하지 마세요

신세대 설정이 너무 작으면 두 가지 명백한 현상이 발생합니다. 하나는 마이너 GC의 수가 빈번하다는 것이고, 다른 하나는 마이너 GC 개체가 Old Generation에 직접 들어갈 수 있다는 것입니다. Old Generation에 메모리가 부족하면 Full GC가 시작됩니다.

2. 새 세대를 너무 크게 설정하지 마세요

Young Generation을 너무 크게 설정하면 두 가지 문제가 발생합니다. 첫째, Old Generation이 작아지고 이로 인해 Full GC가 자주 실행될 수 있으며, 둘째, Minor GC를 재활용하는 데 걸리는 시간이 크게 늘어납니다.

3. 생존자 영역이 너무 크거나 너무 작지 않도록 하세요

-XX: SurvivorRatio 매개변수의 값이 클수록 Eden 영역이 커지고 Minor GC 수가 감소한다는 의미이지만 두 생존 영역이 생존 영역의 메모리 크기를 초과하는 개체가 마이너에 저장되는 경우 GC 후에도 재활용되지 않으면 바로 노년기로 진입하게 되는데,

-XX: SurvivorRatio 매개변수 값이 너무 작게 설정되어 Eden 영역이 작아지고 마이너 GC 트리거 수가 늘어나 Survivor 영역이 커진다는 의미입니다. 마이너에 더 많은 것을 저장할 수 있습니다 GC 이후 살아남은 객체는 Old Age로 진입하는 것을 방지합니다.

4. 신세대에서 개체의 생존 기간을 합리적으로 설정합니다.

신세대 생존 기간의 값은 신세대 개체가 Minor GC를 거친 후 Old 세대에 몇 번 진입할지를 결정합니다. 따라서 이 값은 사용자의 애플리케이션에 따라 조정되어야 합니다. Jvm 매개변수의 이 값은 -XX:MaxTenuringThreshold에 해당하며 기본값은 15배입니다.

GC 튜닝

1.GC 매칭

다른 가비지 컬렉터 보기

2. JVM 매개변수 보기

명령줄 도구 시각적 도구

3.GC 로그 매개변수

-XX :+PrintGCDetails

-XX:+PrintGCTimeStamps

-Xloggc:c:javagc.log


위 내용은 Java Virtual Machine Learning - Memory Tuning 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.