본문 바로가기

백엔드/Java86

다른 바이트 순서를 가진 시스템과의 통신 자바의 기본 데이터형은 Big Endian이다. 이것은 최상위 바이트MSB 가 메모리의 가장 처음에 위치하는 형태이다. 가령 정수 0x01234567이 있다면 이것은 바이트 0x01. 0x23, 0x45, 0x67 순으로 메모리에 위치하게 되고 또한 네트웤 출력에서도 이 순서로 출력이 된다. 어떻게 보면 이것이 당연하다고 생각되겠지만 컴퓨터에서는 최상위 바이트가 마지막으로 위치하는 리틀 엔디안을 많이 이용한다. 리틀 엔디안에서 0x1234567은 0x67, 0x45, 0x23, 0x01 순으로 메모리에 위치하게 된다. cpu에 따라서 다르기는 하지만 대부분의 C/C++ 은 리틀엔디안 이다. 그러므로 자바 시스템에서 리틀엔디안 시스템과 통신을 할 때에는 바이트 순서를 조심해야 한다. 정수 0x1234567.. 2024. 3. 20.
JVM 튜닝 5 VisualVM 원격 접속 1. JMX (자바 프로그램 구동 스크립트에 추가) JAVA_OPTS=" ${JAVA_OPTS} -Dcom.sun.management.jmxremote.port=9099" JAVA_OPTS=" ${JAVA_OPTS} -Dcom.sun.management.jmxremote.rmi.port=9099" JAVA_OPTS=" ${JAVA_OPTS} -Dcom.sun.management.jmxremote.ssl=false" JAVA_OPTS=" ${JAVA_OPTS} -Dcom.sun.management.jmxremote.authenticate=false" JAVA_OPTS=" ${JAVA_OPTS} -Dcom.sun.management.jmxremote.local.only=false".. 2024. 3. 20.
JVM 튜닝 4 쓰레드 단면 분석 1. 쓰레드 단면을 30초~1분 간격으로 5~10회 생성한다. 2. ps -Lf -p 를 통해서 사용량이 가장 많은 LWP (Light weight protocol - 쓰레드 아이디) 찾아냄.. 3. TDA -> threadLogic 을 이용하여 단면덤프를 열어 분석한다.. (java.net 에서 다운로드 받음) 메모리 단면 분석 1. 메모리 단면 덤프 : jmap -dump:format=b,file= 2. 메모리 덤프파일 분석 : 이클립스 MAT 이용 (파일 확장자는 hprof) 3. visualVM 이용 총론 1. 쓰레드 단면확인 2. 쓰레드별 CPU 사용시간 확인 3. 쓰레드 문제 분석 만약 GC 관련 쓰레드가 원인이면 1. jstat 으로 메모리 사용량 확인 --> jstat -.. 2024. 3. 20.
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.
728x90