이번 포스팅의 경우 Naver D2 홈페이지에 작성된 좋은 내용이 있어 공부도 할겸 정리하고자 합니다.Heap 영역에서 자원 할당된 객체를 GC를 통해 자원해제를 하여 메모리 관리를 진행합니다.이때, 어떤 객체를 선택해서 자원해제를 진행하는지에 관한 내용입니다.Java
어노테이션의 경우 자바에서 없어서는 안될 기능입니다.이번 포스팅의 경우 어노테이션에 대해 정리하고자 합니다.Java5 부터 등장한 기능비즈니스 로직에는 영향을 주지 않지만 해당 타겟의 연결 방법이나 소스코드의 구조 변경 가능@Override, @Deprecated가 대
기존 다른 분들께서 작성한 포스팅들 중에서 이해하기 좋은 interface와 abstract에 대해 작성되어 있는 부분을 참고하여 저 나름대로 정리하고자 합니다.부모 자식 관계인 상속 관계에 얽메이지 않는다공통 기능이 필요할 때, Abstract Method를 정의해놓
이번 포스팅의 경우 static 키워드에 대해 정리하고자 합니다.static이라는 키워드를 사용하여 Static 변수와 Static 메소드를 만들 수 있는데 다른 단어로 정적필드와 정적 메소드라고 하며 이 둘을 합쳐 정적 멤버(클래스 멤버)라고 합니다.정적 필드와 정적
Primitive Type은 원시 자료형이라고도 하며 무엇이 있는지, 그리고 각각 몇 바이트를 차지하는지 간단히 정리하도록 하겠습니다.기본값이 있기 때문에 Null이 존재하지 않는다 -> Null값을 넣고 싶다면 Wrapper Class 활용
Reference Type은 참조 자료형이라고도 하며 무엇인지 간단히 정리하도록 하겠습니다.Primitive type을 제외한 타입들이 모두 참조형 타입이라고 할 수 있다빈 객체를 의미하는 NULL이 존재
Java의 접근제어자에 대해 간단히 정리하도록 하겠습니다.public : 전체 영역에서 접근 가능protected : 상속한 클래스default : 해당 패키지private : 해당 클래스 내에서만 접근 가능
Java의 경우 예외를 Exception 클래스를 통해 관리하고 Exception 종류는 크게 두 가지가 있습니다.이번 포스팅은 Exception의 두 가지 종류에 대해 정리하고자 합니다.우선 Error와 Exception의 차이에 대해 간단히 알아보도록 하겠습니다.E
람다 캡쳐링의 경우 저 역시 람다를 사용하기 시작된지 얼마 안됬을 때 겪어 봤던 문제입니다.코드의 경우 lamdaTest 리스트에 1 ~ 5의 값을 넣은 뒤 값이 3보다 크면 var에 1을 할당 한 뒤 반환해주고 3보다 작으면 var의 원래 값인 0을 넣어주는 로직입니
Java에 대해 경험이 얼마 없었던 때에 런타임과 컴파일 타임의 차이에 대해 헷갈렸던 기억이 있어 다시 한번 간략히 정리하려고 합니다.개발자에 의해 C, Java 등과 같은 개발언어로 소스코드가 작성되며, 컴파일 과정을 통해 컴퓨터가 인식할 수 있는 기계어 코드로 변환
싱글톤 패턴에 대해 좋은 포스팅이 있어 다시 한번 정리하려고 하고 개인적으로 필요한 부분이라고 생각되는 부분들은 추가적으로 작성하였습니다.https://webdevtechblog.com/%EC%8B%B1%EA%B8%80%ED%84%B4-%ED%8C%A8%ED%
volatile이 선언되 변수는 즉시 메인 메모리에 저장할 것을 의미합니다.모든 volatile 변수는 컴퓨터의 메인 메모리로부터 읽기하고, volatile 변수에 대한 쓰기 작업은 CPU 캐시가 아닌 메인 메모리에 이루어집니다.멀티스레드 환경에서의 non-volati
혹시 아래 경우의 차이에 대해서 고민해보신 적 있으신가요? String val1 = "test";String val2 = "test";String val3 = new String("test");혹시 그럼 val1 == val2, val1 == val3 각각의 값에 대해
super와 super() 차이에 대해서 간략히 정리해보고자 합니다.super의 경우 자식 클래스가 부모 클래스로부터 상속받은 멤버를 참조할 때 사용하는 참조 변수부모 클래스와 자식 클래스의 멤버의 이름이 같을 경우 super 사용부모 클래스의 메소드에 접근할 때도 사
현재 회사에서는 open jdk를 사용하고 있습니다.그런던 와중에 oracle jdk와 open jdk 차이가 갑자기 궁금해져 검색을 해보았고 Baeldung에 있는 내용을 간략이 정리하려고 합니다.오라클은 매 3년 마다 출시하며 openJDK는 매 6개월마다 출시합니
회사에서 신규 API를 개발한 뒤 테스트를 진행하면서 memory leak에 대해 구체적으로 공부하던 중 좋은 포스팅을 발견하여 제 블로그에 정리하고자 합니다.OOME란 Out of Memory Error의 약자입니다.메모리 누수가 없는 잘 만들어진 프로그램이라 할지라
가장 빈번하게 일어나는 케이스는 아래 세가지입니다.1\. java.lang.OutOfMemoryError: Java Heap Space2\. java.lang.OutOfMemoryError: GC Overhead Limit Exceeded3\. java.lang.Out
지금까지 OOME가 발생 가능한 케이스와 발생했을 떄의 heap 지표를 확인했습니다.이번 포스팅은 OOME를 대비하기 위해 필요한 프로파일링 도구를 소개하고자 합니다.프로파일링 도구는 여러개가 존재하지만 우선은 제가 사용했던 방법을 위주로 작성하도록 하겠습니다.힙 덤프