티스토리 뷰
객체는 필요할 때마다 만드는 것보다 재사용할 수 있다면 재사용하는 편이 프로그램을 더 빠르게 한다. 특히 변경 불가능한 객체는 언제나 재사용할 수 있다.
단순객체 중복생성
String str = new String("reference"); // "reference" 자체가 객체 String str = "reference";
첫 번째 코드는 실행될 때마다 불필요한 객체를 만드는 한 예다. "reference"은 그 자체로 String 객체이다. 그런데 이를 다시 String 객체를 생성하고 있다. 이런 코드가 반복문 안에 있다면, 수많은 객체를 쓸데없이 만들고 지우게 된다. 따라서 두 번째 코드처럼 하는 것이 바람직하다. 이렇게 하면 실행할 때마다 같은 가상머신에서 실행되는 모든 코드가 해당 객체를 재사용하게 된다.
또한 생성자와 정적 팩터리 메서드를 이용하면 불필요한 객체 생성을 피할 수 있다. 생성자는 호출할 때마다 새 객체를 만들지만, 정적 팩터리 메서드는 그럴 필요가 없다.
자동 객체화(autoboxing)
JDK 1.5부터는 자동 객체화(autoboxing)라는 기능이 생겼다. 자바의 기본 자료형과 그 객체 표현형을 섞어 사용할 수 있도록 해 준다. 둘 간의 변환은 자동으로 이뤄진다.
public static void main(String[] args) {
Long sum = 0L;
for (long i = 0; i < Integer.MAX_VALUE; i++) {
sum += i;
}
System.out.println(sum);
}
위 코드는 결과적으로는 정확하게 나오지만, 나와야 할 성능보다 한참 아래의 성능을 보여준다. 위 코드에서 i 는 primitive type이다. 그런데 num은 Long 객체다. 객체의 표현형 대신 기본 자료형을 사용하고, 생각지도 못한 자동 객체화가 발생하지 않도록 유의해야 한다.
'프로그래밍 > Effective Java' 카테고리의 다른 글
[Effective Java] 07. 종료자 사용을 피하라. (0) | 2019.04.21 |
---|---|
[Effective Java] 06. 유효기간이 지난 객체 참조는 폐기하라. (0) | 2019.04.21 |
[Effective Java] 04. 객체 생성을 막을 때는 private 생성자를 사용하라. (0) | 2019.03.10 |
[Effective Java] 03. private 생성자나 enum 자료형은 싱글턴 패턴을 따르도록 설계하라. (0) | 2019.03.09 |
[Effective Java] 02. 생성자 인자가 많을 때는 Builder 패턴 적용을 고려하라. (0) | 2019.03.01 |
- 오라클
- Collection
- 개발환경
- 프로그래머
- Java
- 리액트 16
- React
- effective java
- 자바
- 회고
- 프로그래머스
- Maven
- 이직
- Eclipse
- 정렬 알고리즘
- 리액트
- 자바스크립트
- javascript
- 경력관리
- 제주도 여행
- 오라클 내장 함수
- 제주도 3박4일 일정
- 소프트웨어공학
- spring
- Linux 명령어
- Tomcat
- sort algorithm
- 성능분석
- SQL
- 리눅스 명령어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |