9월 23일-메모리 및 성능 개선

Yullgiii·2024년 9월 23일
0

[Java] 메모리 및 성능 개선을 위한 방법

1. static을 사용한 선언

메모리와 성능을 개선하기 위해 자바에서는 static 키워드를 사용하는 것이 좋습니다. static 키워드를 사용하면, 인스턴스 변수가 아닌 클래스 변수로 선언되어 모든 객체가 공유할 수 있습니다. 이는 메모리를 절약하고, 필요한 값의 흐름을 유지하는 데 효과적입니다.

장점

  • 메모리 절약: static 멤버는 클래스 로딩 시 메모리에 한번만 로드됩니다. 따라서 여러 인스턴스가 이 멤버를 공유하여 메모리 낭비를 줄일 수 있습니다.
  • 값의 연속성: 모든 객체가 동일한 static 변수 값을 공유하므로, 특정 변수의 값이 모든 객체에 연속적으로 적용됩니다.
  • 접근성 향상: static 메소드는 인스턴스화 없이 클래스 이름만으로 호출할 수 있습니다. 이는 코드의 간결함과 효율성을 높입니다.

예제

class Calculator {
    // static 변수 선언
    private static int count = 0;

    // static 메소드 선언
    public static int add(int a, int b) {
        count++;
        return a + b;
    }

    public static int getCount() {
        return count;
    }
}

public class Main {
    public static void main(String[] args) {
        // static 메소드를 호출할 때 객체 생성 없이 클래스명으로 호출 가능
        System.out.println(Calculator.add(5, 3)); // 8
        System.out.println(Calculator.getCount()); // 1

        System.out.println(Calculator.add(10, 2)); // 12
        System.out.println(Calculator.getCount()); // 2
    }
}

2. static 사용 시 주의할 점

  • 메모리 누수: static 변수는 프로그램이 종료될 때까지 메모리에 남아 있으므로, 사용하지 않는다면 메모리 누수의 위험이 있습니다.
  • 동시성 문제: 여러 스레드에서 static 변수를 동시에 수정할 경우 동기화 문제가 발생할 수 있습니다. 이런 경우 synchronized 키워드를 사용해 동기화를 관리해야 합니다.
  • 유연성 부족: static 메소드는 오버라이딩이 불가능하기 때문에 다형성의 장점을 활용하기 어렵습니다.

So...

static 키워드를 사용하면 메모리 사용량을 절약하고 성능을 향상시킬 수 있습니다. 하지만 사용 시 동시성 문제나 메모리 누수를 주의해야 하며, 꼭 필요한 곳에서만 사용해야 합니다. 특히, 인스턴스 변수에 접근할 필요가 없는 경우 static 메소드로 정의해 성능을 높일 수 있습니다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글