GC에 대해
·
Language/Java
개발을 하다보면 유효하지 않은 메모리인 Garbage가 발생하게 됩니다. C언어와 같은 경우 free()라는 함수를 통해 직접 메모리를 해제 해주어야 하는 반면, JAVA를 사용하여 개발할 경우 개발자가 메모리를 직접 해제해주는 일은 거의 없는데요, 그 이유는 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해주기 때문이죠. 예를 들어 이런 겁니다. Tako tako = new Tako(); tako.setFlavor("sweet"); tako = null; // 가비지 tako = new Tako(); tako.setFlavor("hot"); sweet이라는 tako객체는 참조되지 않고 사용이 되지 않아서 가비지가 되었습니다. Java는 이러한 메모리의 낭비를 방지하기 위해 Garbage Coll..
JVM의 구조와 자바의 구동 원리
·
Language/Java
일반 프로그램은 운영체제가 프로그램을 실행시키는 반면, 자바 프로그램은 운영체제가 JVM을 실행시키면 JVM이 프로그램을 실행시킵니다. 여기서 JVM이란 자바 가상머신으로, 자바 프로그램의 클래스 파일들은 운영체제에서 직접 동작하는게 아니라 이 JVM위에서 동작하는데요. 이로 인해 운영체제에 적합한 JVM을 설치하기만 한다면 자바 프로그램은 어떤 운영체제에서든 실행 시킬 수 있습니다. 이 JVM의 구조는 크게 Class Loader, GC, Execution Engine, Runtime Data Area로 나눠집니다. Class Loader에 대해 먼저 설명해보자면 java컴파일러(javac.exe)가 .java파일을 컴파일 하면 .class파일(바이트코드)이 생성됩니다. 이렇게 생성된 클래스 파일들을 ..
클래스 다이어그램
·
Language/Java
com.tako.constuctor.model.vo.User - userId:String - userPwd:String - userName:String - age: int - gender: char + setXXX(필드명:자료형) : void + getXXX(): 각 필드의 자료형을 반환형으로 써야한다. + information(): String + public # protected ~ default - private
접근 제한자 4가지
·
Language/Java
(+)public : 어디서든(같은 패키지, 다른패키지 모두) 접근 가능 (#)protected : 같은 패키지 접근가능 + 만약 다른 패키지라고 한다면 상속구조에서는 접근 가능 (~)default : 같은 패키지에서만 접근 가능 (-)private : 해당 클래스에서만 접근 가능
Arrays.toString()메소드
·
Language/Java
반복문 돌 필요 없이 쉽게 배열을 출력할 수 있는 메소드! import java.util.Arrays; 임포트 잊지 말고..! int[] sample = {1,2,3,4,5}; System.out.println(Arrays.toString(sample));
얉은 복사, 깊은 복사(수정중)
·
Language/Java
- 얉은 복사- > 원본과 같은 주소값을 공유하는 복사입니다. // 얉은 복사 int[] origin = {1,2,3,4,5} //복사본 배열 int[] copy = origin; //복사본 배열 수정 copy[2] = 99; /* 실행결과: 원본과 복사본 배열 모두 1 2 99 4 5 이렇게 수정되었음 copy에 orgin의 주소값을 대입해주었기 때문에 원본 배열이 수정되는 결과를 낳는 것임 즉 원본배열을 참조하고 있음 */ -깊은 복사 - > 원본과 동일한 새로운 배열을 만들고 실제 내부 값들을 복사합니다. 1번 방법) 몇번 인덱스부터 몇개를 어느 위치의 인덱스에 복사할껀지 다 직접 지정 가능 int[] orgin = {1,2,3,4,5}; int[] copy = new int[10]; //Syste..
자바 배열 선언 및 할당과 동시에(초기화) 한 번에 끝내기
·
Language/Java
자바 배열 선언 및 할당과 동시에 초기화를 한번에 끝내는 법 int[] arr1 = new int[]{1,2,3,4}; //첫번째 방법 int[] arr2 = {1,2,3,4}; //두번째 방법
Stack과 Heap
·
Language/Java
Heap이라는 영역에서는 절대 주소 값이 겹칠 수 없음. JVM(Java Virtual Machine)은 Heap안의 영역을 비워두지 않고 값 초기화까지 자동으로 진행해줌 Heap영역에는 절대 빈 공간이 존재할 수 없다. 변수는 Stack에 저장됨 Stack의 변수 값을 비워두는 게 가능하지만 초기화해주는 것을 권장. 참조 자료형(int[],double[],String..etc)의 경우 stack안의 변수에 heap의 주소 값이 들어가게 되고 힙의 해당 주소를 참조하게 됨.
takoyummy
'Language/Java' 카테고리의 글 목록 (4 Page)