본문 바로가기

자바44

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.
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.
자바 UTF-8 바이트 public static void main(String arg[]) throws UnsupportedEncodingException { String line="하하하"; System.out.print("문자열 길이 : "+line.length()); // 3 System.out.print("문자열 byte 길이 : "+line.getBytes("UTF-8").length); // 9 System.out.print("문자열 byte 길이 : "+line.getBytes().length); // 9 } 2024. 3. 19.
int vs Integer int (Primitive 자료형 (long, float, double,. ....)) 자료형 실제 값을 저장하고 있음. 산술 연산이 가능. null 로 초기화 불가능, 0으로 초기화 Integer (Reference Type / Wrapper 클래스(객체)) 클래스 실제 값이 아닌 객체의 주소를 저장하고 있음. Unboxing 을 하지 않으면 산술 연산이 불가능하지만, null값은 처리할 수 있음. null값 처리가 용이해서 SQL 과 연동할 경우 처리가 용이. 직접적인 산술연산은 불가능 primitive wrapper 클래스 자바의 기본 자료형을 클래스로 정의하여 객체 단위로 처리할수있도록 제공하는 클래스 기본형 타입(primitive Type)의 데이터를 객체로 사용할수있도록 API에서 제공하는 클.. 2020. 1. 27.
728x90