본문 바로가기

Programming/Java

[Java] 가비지 컬렉션(Garbage Collection) 여기저기서 나오는 메모리, 자바에서 말하는 가비지, GC 정리하자! 가비지 컬렉션(Garbage Collection) 정의 1. 가비지(Garbage) - 정리되지 않은 메모리, 유효하지 않은 메모리 주소 - 주소를 잃어버려 사용할 수 없는 메모리 - 앞으로 사용하지 않고, 메모리를 가지고 있는 객체도 포함 - 프로그래밍 언어에서Danling Object / Java에서 Garbage라고 부른다. public class Main { public static void main(String[] args) { int[] arr = new int[3]; arr[0] = 0; arr[1] = 1; arr[2] = 2; arr = new int[] {8, 9, 10}; } } 위의 부분에서, arr 이라는 배열이 .. 더보기
[Online Study 2주차] 자바 데이터 타입, 변수, 그리고 배열 [학습 주제] 자바 데이터 타입, 변수, 그리고 배열 [학습 목표] 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다. [학습 내용] 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var 프리미티브 타입 종류와 값의 범위, 그리고 기본 값 1. 기본형 타입(Primitive Type) - 사전에 정의해놓은 8가지 데이터 타입 - 저장 공간에 실제 리터럴 형태의 값이 저장 Ex) int, char, short. long, float, double, boolean, byte 값의 종류 Type 크기(byte).. 더보기
[Java] 변수 종류 - 클래스 변수 / 인스턴스 변수 / 지역 변수 한 번씩 헷갈리는 Java 변수 종류 정리 ! 구분 변수 종류 특징 멤버 변수 클래스 변수 1. static 을 붙여서 만듦 2. 객체 생성 없이도 사용 가능 [사용 이유] 1. 인스턴스에 따라 변하지 않는(불변의) 값이 필요할 경우 2. 인스턴스를 생성할 필요가 없는 값을 원하는 경우 3. 변수의 변경 사항을 모든 인스턴스가 공유해야 하는 경우 인스턴스 변수 객체를 생성해야만 사용 가능 지역변수 메서드 안에서만 선언 및 해당 메서드 안에서만 사용 가능 참고 - https://jishushu.tistory.com/11 더보기
[Online Study 1주차] JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. [학습 주제] JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. [학습 목표] 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기 [학습 내용] JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성 요소 JDK와 JRE의 차이 JVM이란 무엇인가 1. JVM의 정의 - Java Virtual Machine으로, 자바를 실행하기 위한 가상 기계(컴퓨터) 2. Java의 특징 - OS에 종속적이지 않고 실행되기 위해서는 OS 위에서 Java를 실행 시킨 것이 JVM -> OS에 종속 받지 않고 CPU가 Java를 인식 및 실행할 수 있게 하는 가상 컴퓨터 컴파일 과정 - '컴파일(Compile)'이란, 개발자가 작.. 더보기
[Java] 접근 제어자(public, protected, default, private) public > protected > default > private 왼쪽부터 오른쪽으로 가면서 접근 범위가 좁혀진다. Public: 접근에 제한이 없음 Protected: 동일한 패키지 내에 존재하거나 상속된 클래스에서 접근 가능 default: 아무런 접근 제한자를 명시하지 않으면 default 값이 되며, 동일한 패키지 내에서만 접근이 가능 private: 자기 자신의 클래스 내에서만 접근 가능 이중 public과 private를 가장 많이 사용한다. 접근 제어자는 변수나 함수, 클래스에 대한 접근을 제한하여 객체가 가진 고유의 멤버 변수 값이 외부의 접근으로 인해 잘못 변경되는 것을 막을 수 있다.(캡슐화) 각 제어자의 접근 비교표를 보면, 제어자 같은 클래스 같은 패키지 같은 패키지 내의 상속 .. 더보기
[Java] static static: 정적이다. -> 클래스에 고정된 멤버로 클래스 멤버라 부름. 클래스에 고정된 멤버 -> 클래스 로더가 클래스를 로딩하면 메모리에 할당시켜 클래스 로딩이 끝나면 바로 사용 가능 전역적으로 쉽게 재사용하는 멤버나, 잘 변하지 않는 변수/메서드를 사용할 때 쓰임 -> 만들어놓고 클래스 호출이나 객체 생성을 따로 할 필요없이 바로바로 사용 가능 메모리 자원을 할당해놓고 사용 -> 너무 많이 사용하면 메모리를 많이 차지하게 되어 프로그램이 무거워짐. static 필드 사용 예시로, class Number { static int num1 = 0; // 클래스 필드 int num2 = 0; // 인스턴스 필드 } public class Main { public static void main(String.. 더보기