백엔드132 JVM 튜닝 3 메모리 크기를 지정할 때 지정해야 하는 것이 한 가지 더 있다. 바로 NewRatio다. NewRatio는 New 영역과 Old 영역의 비율이다. –XX:NewRatio=1로 지정하면 New 영역:Old 영역이 1:1이 된다. 만약 1GB라면 New 영역:Old 영역은 500MB:500MB가 된다. NewRatio가 2이면 New 영역:Old 영역이 1:2가 된다. 즉, 값이 커지면 커질수록 Old 영역의 크기가 커지고 New 영역의 크기가 작아진다. 디폴트 GC 확인방법 : java -XX:+PrintCommandLineFlags -version 2024. 3. 20. JVM 튜닝 2 YGCT/YGC = Minor GC 처리시간 FGCT/FGC = Full GC 처리시간 --> 아래의 기준이면 적당함... 절대치는 아님. Minor GC의 처리 시간이 빠르다(50ms내외). Minor GC 주기가 빈번하지 않다(10초 내외). Full GC의 처리 시간이 빠르다(보통 1초 ~ 2초 이내). Full GC 주기가 빈번하지 않다(10분에 1회). Survivor 영역 중 하나는 반드시 비어 있는 상태로 남아 있어야 한다. 만약 두 Survivor 영역에 모두 데이터가 존재하거나, 두 영역 모두 사용량이 0이라면 여러분의 시스템은 정상적인 상황이 아니라고 생각하면 된다. --> 특정 스레드에서 비즈니스 로직이 blocking 되어 GC에 문제가 발생한다. 해당 로직을 Async 로 리팩토링.. 2024. 3. 20. JVM 튜닝 1 jstat -gc -h20 -t 3000 3000 jstat -gcutil -h20 -t 3000 3000 -> -gc -> gcutil : gcutil 에 대해서 수행 -> -h20 : 20라인마다 header 찍음 -> -t : time stamp 프린트(JVM 이 스타트 된 이후의 시간) -> 2546: 프로세스 id -> 3000 : interval (ms 단위) -> 3000 : count 2024. 3. 20. Java Time과 System Time 의 문제해결 현상 Java 데몬 start 후 1~2일이 지나면 java 어플리케이션에서의 시간과 시스템의 시간이 몇 초이상 차이가 나며, 시간이 지날수록 Gap은 더 커지는 경우가 있습니다. 조치방법 (예 : Sun-JDK 계열의 경우) 자바를 실행시킬때 다음의 옵션을 추가하여 시간 동기화를 최대한 맞춥니다. java -XX:+UseGetTimeOfDay -XX:+UseHighResolutionTimer 2024. 3. 20. serialVersionUID 이란? Warning 해결하기 객체를 파일에 쓰거나 전송하기 위해서는 직렬화를 해야 하는데 그러기 위해 객체 클래스에 Serializable 인터페이스를 implements 하게 된다. 하지만 Serializable 인터페이스를 implements 하게 되면 노란색 Warning이 발생한다. The serializable class *** does not declare a static final serialVersionUID field of type long 저렇게 Warning이 발생하지만 동작하는데는 문제가 없다. 그래도 계속 저렇게 Warning이 떠있는데 왜 생기는 것이며 serialVersionUID 는 무엇이길래 없다고 그러는 건가? serialVersionUID 는 직렬화에 사용되는 고유 아이디인데, 선언하지 않으면 JV.. 2024. 3. 20. 이전 1 ··· 5 6 7 8 9 10 11 ··· 27 다음 728x90