Java

    Set 컬렉션 클래스

    HashSet Set 인터페이스를 구현한 가장 대표적인 컬렉션으로, 해시 알고리즘을 사용하기 때문에 검색 속도가 매우 빠르다. 내부적으로 HashMap 인스턴스를 이용하여 요소를 저장하며, 중복을 허용하지 않기 때문에 add()를 통해 중복된 요소를 추가할 경우 해당 요소를 추가하지 않고 false를 반환한다. 또한 저장 순서를 유지하지 않기 때문에, 저장 순서를 유지하고자 한다면 LinkedHashSet을 사용해야 한다. 중복 확인 HashSet의 add 메서드는 새로운 요소의 중복 여부를 판별하기 위해 다음과 같은 과정을 거친다. 해당 요소에서 hashCode() 메서드를 호출하여 반환된 해시값으로 검색할 범위를 결정한다. 해당 범위 내의 요소들을 equals() 메서드로 비교한다. 따라서 HashS..

    컬렉션 프레임워크와 List 컬렉션 클래스

    컬렉션 프레임워크 자바에서 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합 즉 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것 컬렉션 프레임워크에서는 데이터를 저장하는 자료구조에 따라 핵심이 되는 주요 인터페이스를 정의해 놓았다. 컬렉션 프레임워크의 모든 컬렉션 클래스들은 List, Set, Map 인터페이스 중 하나를 구현하고 있다. List와 Set 인터페이스는 모두 Collection 인터페이스를 상속받지만, 구조상의 차이로 인해 Map 인터페이스는 별도로 정의된다. Collection List와 Set 인터페이스의 공통된 부분을 뽑아서 정의한 인터페이스로, Map 인터페이스는 다른 형태로 컬렉션을 다루기 때문에 같..

    Garbage Collector (GC)

    자바 프로그래밍에서 하나의 객체는 메모리를 점유하고, 필요하지 않으면 메모리에서 해제되어야 한다. GC란 더 이상 필요가 없는 쓰레기 객체를 정리하는 작업을 말한다. 자바에서는 메모리를 GC로 관리하기 때문에, 개발자가 메모리를 처리하기 위한 로직을 만들 필요가 없다. GC 작업을 하는 가비지 콜렉터는 메모리 할당, 사용 중인 메모리 인식, 사용하지 않는 메모리 인식과 같은 일들을 수행한다. 사용하지 않는 메모리를 인식하는 작업을 수행하지 않으면, 할당한 메모리 영역이 꽉 차서 JVM에 행이 걸리거나, 더 많은 메모리를 할당하려는 현상이 발생한다. 행이란, 서버가 요청을 처리 못하고 있는 상태를 의미한다. 만약 JVM의 최대 메모리 크기를 지정해서 전부 사용한 다음, GC를 해도 더 이상 사용 가능한 메..

    JVM (Java Virtual Machine)

    HotSpot VM 자바 성능 개선을 위해 Sun에서 만든 Just In Time(JIT) 컴파일러의 이름이 HotSpot VM JIT 컴파일러는 프로그램의 성능에 영향을 주는 지점에 대해서 지속적으로 분석하며, 분석된 지점은 부하를 최소화하고, 높은 성능을 내기 위한 최적화 대상이 된다. 자바 1.3 버전부터 기본 VM으로 사용되어 왔으며, 운영되고 있는 대부분의 시스템들은 모두 HotSpot 기반의 VM HotSpot VM은 아래의 세 가지 주요 컴포넌트로 구성된다. VM 런타임 JIT 컴파일러 메모리 관리자 VM 런타임 HotSpot VM 런타임에 GC 방식과 JIT 컴파일러를 끼워 사용할 수 있다. 이를 위해서 VM 런타임은 JIT 컴파일러용 API와 가비지 컬렉터용 API를 제공한다. JVM을 ..

    서버 세팅

    웹 기반의 시스템에서 성능에 영향을 줄만한 세팅은 크게 웹 서버, WAS 서버, DB 서버, 장비 세팅으로, 시스템에 가장 적절한 설정값은 반드시 성능 테스트를 통해서 찾아내야 한다. 아파치 웹 서버 설정 웹 서버를 WAS 서버 앞에 두지 않으면 정적인 리소스를 처리하느라 WAS 서버의 스레드를 점유하게 된다. 따라서, 반드시 상용 웹 서버나 아파치 웹 서버를 WAS 앞 단에 두고 운영해야 한다. httpd.conf 아파치 웹 서버는 여러 개의 프로세싱 모듈 기반의 서비스를 제공한다. (MPM) 아파치 웹 서버의 설정을 바구는 방법은, 설치 폴더 하단의 conf 디렉터리에 있는 httpd.conf 파일을 수정하는 것 ThreadsPerChild 250 MaxRequestsPerChild 0 Threads..