사용자 도구

사이트 도구


java:gc

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:gc [2018/03/14 08:37]
kwon37xi [G1 GC]
java:gc [2022/03/03 10:11] (현재)
kwon37xi
줄 1: 줄 1:
 ====== Java Garbage Collection ====== ====== Java Garbage Collection ======
 +  * [[java:g1gc|G1 GC]]
 +  * **GC 옵션은 어떤 상황에서든 명시적으로 지정하는게 좋다.**
 +    * 메모리가 ''1792mb'' 이하이면 Serial GC로 기본 지정된다. 이는 심각한 성능저하를 일으킨다.
 +    * https://twitter.com/brunoborges/status/1499114848516329472?s=20&t=MA20XuqUuG50dnOvqXIXqw
 +
 +
 +===== 공식문서 =====
 +  * [[https://docs.oracle.com/en/java/javase/11/gctuning/introduction-garbage-collection-tuning.html|Java 11 GC Tuning]]
 +  * [[https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/|Java 8 GC Tuning]]
 +
 +===== 참조 =====
 +
 +  * [[https://johngrib.github.io/wiki/java-gc-tuning/|Java GC 튜닝 - 기계인간 John Grib]]
   * [[http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html|Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning]]   * [[http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html|Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning]]
   * [[http://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/index.html|Java 8 GC Tuning]]   * [[http://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/index.html|Java 8 GC Tuning]]
줄 17: 줄 30:
   * [[http://www.poalsoft.com/blog/?p=34|JVM Tuning – Garbage Collection]]   * [[http://www.poalsoft.com/blog/?p=34|JVM Tuning – Garbage Collection]]
   * [[http://gceasy.io/|GC Easy]] Web GC Log Analyzer   * [[http://gceasy.io/|GC Easy]] Web GC Log Analyzer
 +  * [[https://d2.naver.com/helloworld/37111|Garbage Collection 튜닝]]
 +  * [[https://www.baeldung.com/java-verbose-gc|Verbose Garbage Collection in Java | Baeldung]]
 +  * [[https://www.javacodegeeks.com/2017/11/minimize-java-memory-usage-right-garbage-collector.html|Minimize Java Memory Usage with the Right Garbage Collector]]
 +  * [[https://jelastic.com/blog/java-ram-usage-in-containers-top-5-tips-not-to-lose-your-memory/|Java RAM Usage in Containers: 5 Tips Not to Lose Memory]]
 +  * [[https://jelastic.com/blog/stop-overpaying-for-java-cloud-hosting-resources/|5 Steps to Stop Overpaying for Java Cloud Hosting Resources]]
  
 ===== GC Log===== ===== GC Log=====
줄 35: 줄 53:
   * ''-XX:+HeapDumpOnOutOfMemoryError''   * ''-XX:+HeapDumpOnOutOfMemoryError''
   * ''-XX:HeapDumpPath=<path>''   * ''-XX:HeapDumpPath=<path>''
 +    * ''-XX:-TraceClassUnloading -XX:-TraceClassLoading'' : class loading/unloading 로깅
   * [[https://h20392.www2.hp.com/portal/swdepot/displayProductInfo.do?productNumber=HPJMETER|HPJMeter]] ''verbose:gc''결과 분석   * [[https://h20392.www2.hp.com/portal/swdepot/displayProductInfo.do?productNumber=HPJMETER|HPJMeter]] ''verbose:gc''결과 분석
     * gc 로그에 ''PrintGCDateStamps'' 이 옵션으로 인한 날짜 정보가 있으면 날짜 관련 부분을 지워야한다.     * gc 로그에 ''PrintGCDateStamps'' 이 옵션으로 인한 날짜 정보가 있으면 날짜 관련 부분을 지워야한다.
줄 42: 줄 61:
   * [[http://fasterj.com/tools/gcloganalysers.shtml|Garbage Collector Log Analysers]]   * [[http://fasterj.com/tools/gcloganalysers.shtml|Garbage Collector Log Analysers]]
   * [[https://dzone.com/articles/understanding-g1-gc-log-format|Understanding G1 GC Log Format]]   * [[https://dzone.com/articles/understanding-g1-gc-log-format|Understanding G1 GC Log Format]]
 +  * [[https://github.com/microsoft/gctoolkit|microsoft/gctoolkit: Tool for parsing GC logs]]
 +
 +
 ===== GC Log Rotate - Java 6 u34 이상, Java 7 ===== ===== GC Log Rotate - Java 6 u34 이상, Java 7 =====
   * [[http://jyates.github.io/2012/11/05/rolling-java-gc-logs.html|Rolling Java GC Logs]]   * [[http://jyates.github.io/2012/11/05/rolling-java-gc-logs.html|Rolling Java GC Logs]]
줄 53: 줄 75:
 </code> </code>
  
-===== G1 GC ===== +===== Microsoft GC Toolkit ===== 
-  * Java 7 u60 이상 버전에서 G1 GC 사용할 것. 그 이하버전에 버그가 좀 많다고 함. +  * [[https://devblogs.microsoft.com/java/introducing-microsoft-gctoolkit/|Introducing Microsoft GCToolkit | Java at Microsoft]] 
-  * [[https://bugs.openjdk.java.net/browse/JDK-8038348|[JDK-8038348] Instance field load is replaced by wrong data Phi]] : [[search:lucene|Lucene]] 사용에 영향을 끼치는 G1 GC Bug +
-  * [[http://www.infoq.com/articles/G1-One-Garbage-Collector-To-Rule-Them-All|G1: One Garbage Collector To Rule Them All]] G1 GC 작동 원리에 대한 상세한 설명 +
-  * [[http://www.infoq.com/articles/tuning-tips-G1-GC|Tips for Tuning the Garbage First Garbage Collector]] +
-  * [[http://www.oracle.com/technetwork/articles/java/g1gc-1984535.html|Garbage First Garbage Collector Tuning]] +
-  * [[http://www.oracle.com/technetwork/tutorials/tutorials-1876574.html|Getting Started with the G1 Garbage Collector]] +
-  * [[https://software.intel.com/en-us/blogs/2014/06/18/part-1-tuning-java-garbage-collection-for-hbase|Part #1 - Tuning Java Garbage Collection for HBase]] +
-  * [[http://initproc.tistory.com/entry/G1-Garbage-Collection|G1 Garbage Collection (G1 GC)]] - G1 GC의 기본 개념을 잘 정리했음. +
-  * [[http://blog.mgm-tp.com/2013/03/garbage-collection-tuning/|Tuning Garbage Collection for Mission-Critical Java Applications - Tuning Guidelines for Java Garbage Collection, Part 1 « mgm technology blog]] +
-  * [[http://blog.mgm-tp.com/2013/12/benchmarking-g1-and-other-java-7-garbage-collectors/|Benchmarking G1 and other Java 7 Garbage Collectors - Tuning Guidelines for Java Garbage Collection, Part 2 « mgm technology blog]] +
-  * [[http://blog.mgm-tp.com/2014/04/controlling-gc-pauses-with-g1-collector/|Controlling GC pauses with the GarbageFirst Collector - Tuning Guidelines for Java Garbage Collection, Part 3 « mgm technology blog]] +
-  * [[http://www.slideshare.net/MonicaBeckwith/garbage-first-garbage-collector-g1-gc-migration-to-expectations-and-advanced-tuning|Garbage First Garbage Collector (G1 GC) - Migration to, Expectations …]] G1 GC 실전 예 +
-  * [[http://www.slideshare.net/MonicaBeckwith/con5497?related=2|Garbage First Garbage Collector (G1 GC): Current and Future Adaptabil…]] +
-  * [[http://www.slideshare.net/C2B2/g1-garbage-collector-big-heaps-and-low-pauses|G1 Garbage Collector - Big Heaps and Low Pauses?]] +
-  * [[https://docs.oracle.com/cd/E40972_01/doc.70/e40973/cnf_jvmgc.htm|Tuning JVM Garbage Collection for Production Deployments]] +
-  * [[https://blogs.oracle.com/poonam/entry/about_g1_garbage_collector_permanent|About G1 Garbage Collector, Permanent Generation and Metaspace]] +
-  * [[http://stackoverflow.com/questions/18960493/class-unloading-in-javas-g1-garbage-collector-g1gc|Class Unloading in Java's G1 Garbage Collector (G1GC)]] +
-    * G1 GC 에서는 Class Unloading이 자동으로 이루어진다. ''-XX:+TraceClassUnloading''로 확인 가능. +
-    * [[http://logonjava.blogspot.kr/2015/08/java-g1-gc-full-gc.html?spref=tw|Log on Java: Java G1 GC의 특성에 따른 Full GC 회피 튜닝 방법]] +
-  * [[http://blog.mgm-tp.com/2014/04/controlling-gc-pauses-with-g1-collector/|Controlling GC pauses with the GarbageFirst Collector - Tuning Guidelines for Java Garbage Collection, Part 3 « mgm technology blog]] +
-  * [[https://engineering.linkedin.com/blog/2016/11/application-pauses-when-running-jvm-inside-linux-control-groups|Application Pauses When Running JVM Inside Linux Control Groups | LinkedIn Engineering]] +
-    * Linux에서 쓰레드 갯수 등+
java/gc.1520986074.txt.gz · 마지막으로 수정됨: 2018/03/14 08:37 저자 kwon37xi