Java Thread 자바 스레드는 JVM에서 User Thread를 생성할 때 시스템 콜을 통해서 커널에서 생성된 커널 스레드와 1:1로 매핑이 되어 최종적으로 커널에서 관리된다. JVM에서 스레드를 생성할 때마다 커널에서 자바 스레드와 대응하는 커널 스레드를 생성한다. 자바에서는 플랫폼 스레드로 정의되어 있다. 즉 OS 플랫폼에 따라 JVM이 사용자 스레드를 매핑하게 된다. 스레드 생성은 Thread 클래스를 상속하는 방법과 Runnable 인터페이스(함수형 인터페이스)를 구현하는 방법이 있다. Thread 실행 및 종료 자바 스레드는 OS 스케줄러에 의해 실행 순서가 결정되며 스레드 실행 시점을 JVM에서 제어할 수 없다. 새로운 스레드는 현재 스레드와 독립적으로 실행되고 최대 한번 시작할 수 있고..
ElasicSearch 소개 검색 엔진 엘라스틱서치는 루씬 기반의 오픈소스 검색 엔진이다. 단순한 텍스트 매칭 검색이 아닌 full-text-search가 가능하며 다양한 종류의 검색 쿼리를 지원한다. 다양한 애널라이저를 조합해 여러 비즈니스 요구사항에 맞는 색인을 구성할 수 있고 형태소 분석도 가능하다. full-text-search란? (MongoDB 사이트 왈) 전체 텍스트 검색(full-text search)"은 전자적으로 저장된 방대한 텍스트 데이터에서 특정 텍스트를 검색하고, 쿼리에서 지정된 단어 중 일부 또는 전체가 포함된 결과를 반환하는 것을 의미합니다. 이에 비해 전통적인 검색은 정확한 일치만을 반환하는 것이 특징입니다. 분산 처리 엘라스틱 서치는 분산 처리를 고려하여 설계됐다. 데이터를..
자바에서 모든 클래스는 Object 클래스를 부모 클래스로 가진다. Object 클래스에는 equals()와 hashCode()가 있다. 오늘은 이 둘에 대해 정리해보려고 한다. 동등성과 동일성 동일성은 두 객체가 동일한 인스턴스임을 의미하며 == 연산자로 확인이 가능하다. 동등이란 두 객체가 동일한 상태나 값을 갖는다는 것을 의미하며, equals 메서드로 확인할 수 있다. 동일성은 동등하다고 말할 수 있지만, 동등하다고해서 동일성을 가진다고 말할 수는 없다. equals() public boolean equals(Object obj) { return (this == obj); } equals()는 객체가 동등한지(논리적 동치성, 동등성)를 검사한다. 기본적으로 Object 클래스의 equals 메서드..
오늘은 Java 8 버전에서 등장한 MetaSpace에 대해 알아보자. Permanent Generation 자바 7버전까지는 Permanent Generation이라는 영역이 존재했다. 줄여서 PermGen라고 부른다. PermGen은 로드되는 클래스, 메서드 등에 관한 정보 등 메타 데이터(리플렉션)를 저장한다. 모든 static 메서드, static 변수를 저장한다. Java 7 버전까지는 String Pool도 PermGen의 일부 바이트 코드, 이름, JIT 정보도 가지고 있다. 이 영역은 제한된 메모리가 큰 단점이다. 제한 된 메모리로 인해 Out Of Memory(OOM) 문제가 발생할 수 있다. Permanent Generation은 Heap 영역인가? 위 사진만보면 PermGen은 Hea..