Effective JAVA 책 완독하기2 - 쓸모없는 객체 참조는 제거하라라

박경현·2023년 4월 30일
0

이번 1장 전체의 핵심은 바로 "객체" 였던거 같다.

객체를 어떻게 생성해야 메모리 낭비를 안할 수 있는지, (스태틱 팩토리 메소드 고려)
싱글톤으로 해야하는 이유와 객체 참조 제거 등

객체 지향에서 객체라는 단어가 같는 무게에 대해? 더 깊이 알 수 있었다!!

쓸모 없는 객체를 중복 생성하지 마라!!

사실 당연한 말인데 매번 중복 생성했던거 같다.. 의식 하지 안 해서 그런가

String s = new String("A"); // 이렇게 매번 적으면 매번 새로운 객체를 쓸데없이 생성하고 참조!
String s2 = "바보아니야!"; // 이렇게 적으면 이 단어가 저장된 공간만을 참조!

여러번 재사용하는 객체에 관해서는 재사용 할 수 있는 방법을 고민하고 객체를 만들어야한다!

Null로 참조시켜서 해결해라 -> 단점도 존재!

elements[size] = null; 

이렇게 해서 null로 참조 시키면 아무것도 참조하지 않는 거여서 계속 이상태면
가비지 컬렉터가 객체를 회수한다!!

하지만 잘못해서 이걸 사용해버리면 NullPointerException이 발생할 수도 있다!

쓸모없는 객체를 참조 하지 않는 가장 좋은 방법

이 참조를 보관했던 참조변수가 다른 객체를 참조하도록 하거나 유효범위,
즉 스코프를 벗어나게 하는 것이다!

특정 함수에서만 필요하다면 이 함수 내에서 지역 변수로 만드는게 좋은 듯!!

가비지 컬렉터에 대해 알아보자 -> 그전에 JVM이란?

가비지 컬렉터라는 것에 대해 알기 위해서는 그 전에 더 큰 범주인 JVM애 대해 정확히 알고 있어야한다!

JVM의 특징-1 어느 OS건 프로그래밍이 가능하다!

자바코드를 컴파일(기계어로 번역)하여 .class파일로 변환한다
그 후 이 코드가 JVM 환경에서 실행됨
그리고 각각의 운영체제에 맞는 기계어로 번역해준다!

차고로 JAVA로 작성된 프로그램은 JVM에서만 돌아간다!

그렇다면 어떻게 JVM이 동작할까?

자바로 개발된 프로그램을 실행하면 JVM은 OS로부터 메모리를 할당 받는다!

자바 컴파일러가 자바 소스코드를 -> .class파일인 바이트 코드로 컴파일 한다

classLoader를 통해 JVM Runtime DataArea로 로딩함!
로딩된 .class파일들은 Execution Engine을 통해 각각의 OS에 맞게 해석됩니다

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글