목록Java (13)
olrlobt
Cache캐시(Cache)는 컴퓨터 시스템에서 고속 데이터 저장소 역할을 하며, 자주 사용되는 데이터나 명령어를 일시적으로 저장하여 빠른 접근을 가능하게 한다. 캐시는 주로 데이터 접근 시간을 줄이고, 전체 시스템의 효율성을 높이기 위해 사용된다. 이는 프로세서가 데이터를 필요로 할 때마다 주기억장치(예: 하드 드라이브, SSD)에서 데이터를 가져오는 데 걸리는 시간을 단축시키는 데 도움을 준다. 성능 향상: 캐시는 접근 속도가 빠른 메모리 유형이므로, 데이터를 캐시에서 빠르게 읽어 성능을 크게 향상시킨다.효율적인 리소스 사용: 자주 사용되는 데이터를 캐시에 저장함으로써, CPU나 서버는 더 중요한 작업에 더 많은 자원을 할애할 수 있다.대역폭 사용 감소: 네트워크 기반의 캐시 사용은 네트워크 트래픽과 ..
Finalizer finalize() 메서드는 java.lang.Object 클래스에 정의되어 있으며, 자바에서 객체가 가비지 컬렉션에 의해 제거될 때 실행된다. 즉, Finalizer는 자바에서 객체가 소멸될 때 마지막으로 수행할 수 있는 작업을 정의하는 데 사용된다. 주로 파일 핸들, 네트워크 연결, 데이터베이스 연결처럼 시스템 리소스를 정리하는 용도가 이런 작업이다. 하지만, Finalizer는 예측할 수 없고, 상황에 따라 위험할 수 있어 불필요하며, 오작동, 낮은 성능, 이식성 문제의 원인으로 기본적으로는 쓰지 말아야 한다. finalize()를 상속한 리소스 예제 public class Resource { private boolean isOpen; public Resource() { this...
다 쓴 객체 참조를 해제하라 다 쓴 객체는 GC의 대상이 되어, 자바에서는 자동으로 메모리 해제가 된다. 하지만 반대로, GC 언어에서 메모리 누수를 찾기가 아주 까다로운데, 다 쓴 객체의 참조가 하나라도 살아 있으면 GC의 대상이 되지 않기 때문이다. 예를 들어, 사용자가 임의로 만든 Stack.class 가 있다고 하자. public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Obje..
"불필요한 객체 생성을 피하라"는 원칙은 성능 향상과 메모리 효율성을 높이는 데 기여할 수 있다. 실제로, 똑같은 기능을 하는 객체를 반복적으로 생성하기보다는 필요할 때 재사용하는 것이 더 나을 수 있고, 종종 더 빠르기도 하다. 하지만, 이 원칙을 "어떠한 상황에서도 불필요한 객체 생성을 하지 말라"로 오해해서는 안 된다. 현대의 자바 가상 머신(JVM)은 작은 객체의 생성과 회수에 매우 효율적으로 최적화되어 있다. 간단한 객체를 생성하는 것이 프로그램의 명확성, 간결성, 기능성을 향상하는 경우, 이를 피할 이유는 없다. 특히, 방어적 복사가 필요한 상황에서 객체를 재사용하는 것은 주의가 필요한데, 잘못된 객체 재사용은 예측 불가능한 버그와 심각한 보안 문제를 초래할 수 있다. 반면, 불필요한 객체 생..
싱글톤(Singleton) 싱글톤(Singleton)은 특정 클래스의 인스턴스가 애플리케이션 내에서 단 하나만 존재하도록 보장하는 패턴이다. 싱글톤은 전역 상태를 생성하거나, 리소스를 공유하는 데 유용하며, 객체의 중복 생성을 방지하고 전체 시스템에서 하나의 인스턴스만을 사용하도록 한다. 싱글톤을 쓰는 이유 싱글톤 패턴을 이용하는 이유는 다음과 같다. 리소스 관리 및 접근 제어 : 싱글톤 패턴은 특정 자원이나 서비스에 대한 접근을 제어하는 데 유용하다. 싱글톤은 한 번에 하나의 인스턴스만이 자원을 사용하도록 보장함으로써, 리소스의 과도한 사용을 방지할 수 있다. 메모리 효율성 : 싱글톤은 필요한 시점에만 인스턴스를 생성하고, 이후에는 동일 인스턴스를 재사용한다. 이는 메모리 사용을 줄이고 시스템의 전반적..
정적 팩토리 [Java] 생성자 대신 정적 팩토리 메서드를 고려하라 생성자 대신 정적 팩토리 메서드를 고려하라 생성자(constructor)는 객체 지향 프로그래밍에서 클래스의 인스턴스를 초기화하는 메서드이다. 주된 목적은 객체 생성시점에 필요한 초기화 작업을 olrlobt.tistory.com 생성자에 매개변수가 많다면 빌더를 고려하라 자바에서는 객체를 생성하기 위해, 생성자와 정적 팩토리 메서드를 사용한다. // 생성자를 이용한 객체 생성 Car electricCar = new Car("테슬라"); Car petrolCar = new Car("모닝", 50); // 정적 팩토리 메소드를 이용한 객체 생성 Car electricCar = Car.createElectricCar("테슬라"); Car pe..
생성자 대신 정적 팩토리 메서드를 고려하라 생성자(constructor)는 객체 지향 프로그래밍에서 클래스의 인스턴스를 초기화하는 메서드이다. 주된 목적은 객체 생성시점에 필요한 초기화 작업을 수행하는 것이다. 정적 팩토리 메서드(static factory method)는 생성자의 제한점에 대한 대안을 제공하는 재사용 가능한 소프트웨어 설계의 해결책이다. 정적 팩토리 메서드를 생성자 대신 사용함으로써 객체의 생성을 단순화하고 코드의 가독성을 높이는데 사용할 수 있다. 정적 팩토리 메서드가 생성자보다 좋은 이유 정적 팩토리 메서드가 생성자보다 좋은 이유 다섯 가지는 다음과 같다. 이름을 가질 수 있다. 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다. 반환 타입의 하위 객체를 반환할 수 있는 능력이 ..
Garbage Collection (GC , 가비지 컬렉션) Garbage Collection은 JAVA의 메모리 관리 방법 중 하나이며, JVM에 내장된 가바지 컬렉터로 메모리를 관리하는 방법이다. 말 그대로 쓰레기, 개발자가 동적으로 할당한 메모리 영역 중 더 이상 사용하지 않는 객체나 데이터를 찾아내어 메모리를 회수하는 과정을 의미한다. 가비지 컬렉션은 자동 메모리 관리 방식으로, 개발자가 객체 생성을 자유롭게 하고 직접 메모리를 해제할 필요 없게 한다. Garbage Collector (가비지 컬렉터) Garbage Collector는 Garbage Collection을 수행하는 구체적인 시스템이나 알고리즘을 의미한다. JVM에 내장된 가비지 컬렉터는 Serial GC, Parallel GC, G..