본문 바로가기

백엔드132

자바 변수 1. static 변수(즉 정적변수)란 - Class 당 하나만 생성되는 변수, 객체(인스턴스)를 아무리 많이 만들더라도 변수는 하나만 존재 - 객체가 생성될 때마다 새롭게 생성되는 멤버 변수와는 달리 초기에 한번만 생성되고 공유하여 사용가능 2. static 변수 생성 시기 : Class 이름이 언급되어 질때 생성 (new 뿐만 아니라 Class 명만 나와도 생성됨) - 한개만 호출되면 나머지도 static 변수도 한꺼번에 초기화 static final 변수 생성 시기 : Class 이름이 언급 되어지면 해당 변수만 생성 - 나머지 static final 변수는 초기화 안됨. 3. 변수 종류 - 멤버변수 : 클래스변수(정적변수, static 변수) , 인스턴스변수 - 지역변수 2024. 3. 20.
자바 자료구조 2024. 3. 20.
다른 바이트 순서를 가진 시스템과의 통신 자바의 기본 데이터형은 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.
728x90