Singleton 디자인 패턴
어떤 클래스가 최초 한번만 메모리를 할당하고 그 메모리에 객체를 만들어 사용하는 디자인 패턴을 의미.
즉 생성자의 호출이 반복적으로 이뤄져도 실제로 생성되는 객체는 최초 생성된 객체를 반환해주는 것.
String과 StringBuffer의 차이
String은 데이터 테입이 아닌 클래스 객체. 또한 불변의 객체로 한번 선언된 내용에 추가적으로 바뀌지 않는다.
예를 들어,String name =”길동”; 에다가 name += “홍”; 이라 하면 name이 가리키는 값은 "길동홍"이 된다.
그럼 어떻게 바뀌는 것일까??
name += “홍”; 구문이 실행될 때 실제로는 스트링 버퍼를 새로 생성해서 name이 가리키는 “길동”을 만들어주고,
스트링 버퍼의 append 함수를 이용하여 “홍” 를 붙여준다.
그렇게 완성된 스트링 버퍼값을 메모리에 올리고, name은 다시 이 값을 참조하게 된다.
스트링 버퍼는 char타입의 배열로 되어 있어서 한글자 한글자를 append 할 수 있다.
자바의 메모리 영역
메서드 영역 : static 변수, 전역변수, 코드에서 사용되는 Class 정보 등이 올라가는 영역.
코드에서 사용되는 class들을 로더로 읽어 클래스별로 런타임 필드 데이터, 메서드 데이터 등을 분류해 저장.
스택(Stack) : 지역변수, 함수(메서드) 등이 할당되는 LIFO(Last In First Out) 방식의 메모리 영역.
힙(Heap) : new 연산자를 통한 동적 할당된 객체들이 저장되며, Garbage 컬렉션에 의해 메모리가 관리되어지는 영역.
'Backend' 카테고리의 다른 글
Spring Annotation (0) | 2021.09.11 |
---|---|
자바 개념 정리_05 (0) | 2021.09.05 |
자바 개념 정리_04 (0) | 2021.08.02 |
자바 개념 정리_02 (0) | 2021.07.30 |
자바 개념 정리_01 (0) | 2021.07.29 |