Optimizing Java - GC 로깅
1. GC 로깅 개요 GC 로그는 시스템이 내려간 원인의 단서를 찾는 콜드 케이스(Cold Case) 분석을 할 때 유용하다. GC 로깅은 사실상 오버헤드가 거의 없으므로 항상 로깅을 활성화하는 것이 좋다. 1) GC 로깅 켜기 GC 로깅을 켜기 위해 필수적인 JVM 플래그는 다음과 같다. -Xloggc:gc.log -> 로깅할 파일을 g...
1. GC 로깅 개요 GC 로그는 시스템이 내려간 원인의 단서를 찾는 콜드 케이스(Cold Case) 분석을 할 때 유용하다. GC 로깅은 사실상 오버헤드가 거의 없으므로 항상 로깅을 활성화하는 것이 좋다. 1) GC 로깅 켜기 GC 로깅을 켜기 위해 필수적인 JVM 플래그는 다음과 같다. -Xloggc:gc.log -> 로깅할 파일을 g...
1. 근간 기술을 배워야 하는 이유 무어의 법칙이 한계에 다다르고 저렴해진 트랜지스터를 활용해 성능 향상을 꾀하기 위해 하드웨어는 매우 복잡해졌다. 소프트웨어도 이에 맞춰 함께 복잡해져 하드웨어를 잘 알지 못해도 이러한 성능 향상을 누릴 수 있었다. 하지만 성능 향상을 진지하게 고민하고 있다면 이렇게 복잡해진 근간 기술에 대한 이해가 있어야 한다. ...
1. 인터프리팅, 클래스로딩 1) 인터프리팅(Interpreting) JVM은 스택 기반 인터프리터 머신이다. 중간 값을 스택에 담아두고 이 값으로 수행할 연산(Opcode)을 하나씩 처리하는 방식으로 간단하게 설명할 수 있다. JVM은 자바 파일(.java)을 바이트코드 파일(.class)로 컴파일 한 후 바이트코드 파일을 하나씩 인터프리팅하여...
1. 자바의 성능 1) 성능 개요 자바 성능의 본질을 이해하려면 자바의 철학을 이해할 필요가 있다. 자바는 지극히 실용적인 언어로 개발자의 생산성을 높이고 어느정도 성능 희생은 감수하도록 설계되었다. 가비지 콜렉터(Garbage Collector) 등 아주 방대한 서브시스템이 개발자 대신 저수준의 기능을 관리한다. 이러한 거대한 구조로 인해 직접...
상당 부분이 직접 코드를 분석하여 정리한 내용이라 틀린 부분이 있을 수도 있습니다! 잘못된 부분은 알려주시면 바로 수정하겠습니다.🙇♂️ 1. 초기화, 소멸 개념 빈의 생성 후 초기화와 소멸 전 콜백은 다양한 상황에서 활용할 수 있다 예를 들어 빈이 외부 시스템이나 리소스를 사용할 때 빈을 생성할 때 연결하는 코드를 작성하고 소멸 전에 리소...
상당 부분이 직접 코드를 분석하여 정리한 내용이라 틀린 부분이 있을 수도 있습니다! 잘못된 부분은 알려주시면 바로 수정하겠습니다.🙇♂️ 1. 의존성 정리 모든 의존성 주입 공통으로 하나의 클래스나 인터페이스를 상속받는 빈이 여러 개 있을 경우 그 클래스나 인터페이스에 의존성을 주입할 때 @Qualifier로 정확한 빈을 지정해주어야 한다....
상당 부분이 직접 코드를 분석하여 정리한 내용이라 틀린 부분이 있을 수도 있습니다! 잘못된 부분은 알려주시면 바로 수정하겠습니다.🙇♂️ 1. 빈 생성 객체 생성은 컨테이너 생성 시 실행되는 AbstractApplicationContext의 refresh 메서드에서 확인할 수 있다. refresh() 메서드에서 BeanFactory, Be...
상당 부분이 직접 코드를 분석하여 정리한 내용이라 틀린 부분이 있을 수도 있습니다! 잘못된 부분은 알려주시면 바로 수정하겠습니다.🙇♂️ 1. 객체 컨테이너 스프링 컨테이너는 객체의 생성과 초기화, 빈들의 의존성 주입을 담당한다. 크게 BeanFactory 인터페이스와 ApplicationContext 인터페이스가 존재한다. Applicat...
1. DNS(Domain Name System) Domain Name 서로 다른 네트워크 상에서 호스트를 유일하게 식별하기 위해서 IP를 사용한다. 하지만 사용자는 IP 만으로는 이 호스트가 어떤 기능을 하는 호스트인지 구별하는 것은 쉽지 않다. 유일하게 식별할 수 있는 주민등록번호가 있지만 이름을 부르는 것처럼 사람이 읽기 쉬운 텍스트를 활용하여...
1. 암호화 방식 TLS를 이해하기 위해서는 대칭키/비대칭키 암호화 방식의 차이를 인식할 필요가 있다. 어떠한 평문을 다른 사람에게 노출되지 않고 안전하게 전송하고 싶다면 평문을 암호화할 수 있다. 암호문은 키를 가진 제한된 사람만 이를 해독하여 평문으로 바꿀 수 있다. 이 키의 종류에 따라 대칭키 암호화, 비대칭키(공개키) 암호화로 분류할 수 있다...