전체 글 73

Garbage Collection(GC)

가비지 컬렉션가비지 컬렉션은 불필요한 메모리를 정리를 해주는 프로세스로만 단순히 알고 있었습니다. 이번에는 가비지 컬렉션에 대해 더 자세히 알아보고 정리를 해보겠습니다.가비지 컬렉션의 대상객체들은 실질적으로 Heap영역에서 생성되고 Method Area이나 Stack Area 에서는 Heap Area에 생성된 객체의 주소만 참조하는 형식으로 구성됩니다. Heap에 있는 객체에 참조가 있으면 Reachable 참조가 없으면 Unreachable로 구분을 하고 가비지 컬렉션은 Unreachable된 객체를 정리합니다.Reachable : 객체가 참조되고 있는 상태Unreachable : 객체가 참조되고 있지 않은 상태 (GC의 대상이 됩니다.)Mark and Sweep 알고리즘Mark가비지 컬렉션에는 GC ..

Comparable, Comparator

등장 배경primitive type은 Java에서 변수를 비교할 수 있는 기능을 제공해 주지만 새로운 클래스 객체를 만들어 비교하고자 할 때 객체는 사용자가 기준을 정해주지 않는 이상 어떤 객체가 더 높은 우선순위를 갖는지 판단 할 수가 없습니다. 이를 해결하기 위한 인터페이스가 Comparable과 Comparator입니다.//primitive type 비교public static void main(String[] args) { int a = 1; int b = 2; if(a > b) { System.out.println("a가 b보다 큽니다."); } else if(a == b) { System.out.println("a와 b는 같습니다."); } else { System.out.print..

Optional 개념 및 사용법

Optional 개념실제로 개발을 하면서 많이 발생하는 예외 중 하나는 NPE(NullPointerException)입니다. NPE를 예외 처리 하기 위해서는 null 여부를 확인해야 하는 처리가 많이 들어가게 되는데 그러한 경우에는 코드가 복잡하거나 지저분해 질 수 있습니다. 그래서 Java 8에서는 Optional 클래스를 사용해 NPE를 방지할 수 있도록 도와줍니다. Optional 클래스는 Integer나 Double 클래스처럼 'T' 타입의 객체를 포장해 주는 래퍼 클래스(Wrapper class)입니다. Optional 객체를 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메소드로 간단히 회피할 수 있습니다.즉, 복잡한 조건문 없이도 null 값으로 인해 발생하는 ..