스터디/JAVA9 불변 객체와 가비지 컬렉션의 관계 불변 객체는 여러 가지 장점을 가지고 있습니다. 특히 Thread Safe하여 병렬 프로그래밍에서 유용하며, 동기화를 고려하지 않아도 안전하다는 사실은 널리 알려져 있습니다. 하지만 불변 객체에 대해 공부하면서 두 가지 의문이 들었습니다. 불변 객체가 가비지 컬렉션(GC)의 성능을 높일 수 있다는 점이 잘 이해되지 않았습니다. 일반적으로 불변 객체는 한 번 생성된 후 수정이 불가능하기 때문에 GC와 어떤 관계가 있을지 궁금했습니다.불변 객체의 상태를 변경할 때마다 새로운 객체를 생성해야 한다는 점에서, 성능 저하에 대한 우려가 있었습니다. 객체를 자주 생성하는 것이 과연 효율적인지에 대해 의문이 들었습니다.의문을 해결하기 위해서 먼저, 가비지 컬렉션의 대상이 뭔지 알아야합니다. 가비지 컬렉션의 대상 가비.. 2024. 8. 22. IntelliJ의 Run 버튼의 의미 - Build(빌드)와 Compile(컴파일) 빌드와 컴파일 많이 들어서 익숙한 단어들이지만 정확히 어떤 뜻인지는 잘 알지 못 했다. 이번 기회를 통해서 두 단어의 차이에 대해서 알아보려고 한다!! 컴파일 컴파일의 정의는 개발자가 작성한 소스코드를 바이너리 코드로 변환해주는 것이다. 하지만, JAVA에서는 컴파일러에의해 소스파일(.java)가 목적파일(.class)로 변환될 때 가상머신(JVM)이 인식할 수 있는 바이트 코드로 변환된다! 💡 바이너리 코드란? CPU가 이해할 수 있는 언어이다.(0과 1로 구성된 이진코드) 바이트 코드란? 가상머신이 이해할 수 있는 언어이다.(0과 1로 구성된 이진 코드) 링크 컴파일이 각 소스파일(.java)들을 목적파일(.class)로 변환해주는 것이라면, 링크는 이들을 연결해주는 것이다. 개발을 할 때 다른 소스.. 2023. 8. 20. ArrayList는 어떻게 용량을 관리할까? 이번 방학기간에 Java의 자료구조에 대해서 심도있는 공부를 해볼 예정입니다. 그 첫번째는 ArrayList입니다. 먼저, ArrayList는 List 인터페이스의 구현체입니다. List : 인터페이스 동일한 데이터의 중복을 허용 데이터의 저장 순서가 유지된다 객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동으로 인덱스가 부여되고 인덱스로 객체를 검색, 삭제할 수 있다. 저장 방식은 해당하는 인덱스에 객체의 주소값을 참조하여 저장한다. List 인터페이스의 특징은 위와 같은 데 이를 통해 알 수 있는 것은 List는 데이터의 중복을 허용하고, 저장 순서가 유지되어야할 때 사용되어야한다는 것입니다. ArrayList ArrayList는 List 인터페이스의 구현체 중 하나입니다. 아래는 ArrayLis.. 2023. 7. 24. 불변 객체(Immnutable Object)란?? 불변 객체란 뭘까?? 불변 객체란 생성 후 그 상태를 바꿀 수 없는 객체를 말한다. 따라서, multi - thread 환경에서 안전하다!! 그렇다면, 아래의 코드는 불변 객체일까?? 아닐까? public class Phone { private final String madeBy; private final Screen screen; private int useAge; public Phone(String madeBy, Screen screen, int useAge) { this.madeBy = madeBy; this.screen = screen; this.useAge = useAge; } private final String madeBy; private final Screen screen; private .. 2023. 5. 27. String vs StringBuilder vs StringBuffer 안녕하세요! 이번 포스팅에서는 Java의 String 클래스에 대해 다뤄보도록 하겠습니다. String 클래스를 구글링을 하다보면, 가변 객체나 불변 객체라는 말을 심심치 않게 찾아 볼 수 있습니다. String 관련 클래스들을 정리하기 위해서는 알아야할 개념이니 간단하게 개념만 알아보도록 하겠습니다. 💡 불변 객체 : 생성 후 객체 내부의 상태 변경이 불가능한 객체이다. 가변 객체 : 생성 후 객체 내부의 상태 변경이 가능한 객체이다. 먼저, String 클래스에 관해 알아보도록 하겠습니다. String 클래스 String 클래스는 불변 객체입니다. String word = "This is "; System.out.println(word.hashCode()); word += "apple."; Syste.. 2023. 5. 27. final에 대하여 안녕하세요! 최근에 불변 객체에 대해서 학습을 하다가, final 키워드에 대한 이해가 부족하다고 판단되 다시 한번 공부를 해보았 습니다. 먼저, final 키워드는 변수(variable), 메서드(method), 또는 클래스(class)에 사용될 수 있습니다. final 키워드는 위와같이 여러 곳에서 사용될 수 있지만, 공통적으로 가지고 있는 의미가 있는데, 이는 바로 무언가를 제한한다 라는 의미입니다. 먼저, 변수(variable)에 대하여 알아보겠습니다. 변수(variable) 변수에 final을 붙이면 이 변수는 수정할 수 없다는 의미를 가집니다. 하지만, 변수가 기본형 변수냐 아니면, 참조형 변수인 것인가에 따라서 달라집니다. public class Phone { final int useAge .. 2023. 5. 26. 이전 1 2 다음 728x90