SCJP. Garbage Collection  Garbage Collector( 이하 GC) 가 Heap 영역 에 할당된, 더 이상 사용되지 않는 메모리인 Garbage 를 다른 객체가 사용할 수 있도록 정리하는 것.  C++ 에서의 메모리 해제 int* v=new.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
Chapter 16 : Struts 프레임워크 2. chapter 16 : Struts 프레임워크 2.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
2장 닷넷 프레임워크.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
최윤정 Java 프로그래밍 클래스 상속 최윤정
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Ch.07-5 xml-rpc 사용하기 김상엽.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
10장 예외 Lab 10-1.
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Lesson 9. 예외처리.
Lesson 6. 형변환.
명품 Java Programming.
5장. 참조 타입.
제 3장. C보다 나은 C++ II.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
3장 자바의 기본문법(2).
Java 6장. 클래스 : 속성 public class SumTest {
Lesson 7. 클래스와 메소드 - 1.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
10장. 예외처리.
C#.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
13. 연산자 오버로딩.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
Lesson 4. 수식과 연산자.
DataScience Lab. 박사과정 김희찬 (월)
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
24장. 파일 입출력.
19. 함수 포인터와 void 포인터.
Lesson 2. 기본 데이터형.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
컴퓨터공학실습(I) 3주 인공지능연구실.
자바 5.0 프로그래밍.
Power Java 제11장 상속.
JA A V W. 06.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
9장 부프로그램 (3) 순천향대학교 컴퓨터공학부 하 상 호.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
자바 5.0 프로그래밍.
9장 부프로그램 (3) 순천향대학교 컴퓨터공학부 하 상 호.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
3. 모듈 (5장. 모듈).
발표자 : 이지연 Programming Systems Lab.
구조체(struct)와 공용체(union)
Numerical Analysis Programming using NRs
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
실습 UBLAB.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
자바 객체 지향 프로그래밍 Ps lab 김윤경.
OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab
자바 가상 머신 프로그래밍 Chapter 3. 메소드 작성하기 Pslab 오민경.
7 생성자 함수.
3장 자바의 기본문법(2).
Presentation transcript:

SCJP

Garbage Collection  Garbage Collector( 이하 GC) 가 Heap 영역 에 할당된, 더 이상 사용되지 않는 메모리인 Garbage 를 다른 객체가 사용할 수 있도록 정리하는 것.  C++ 에서의 메모리 해제 int* v=new int; delete v; int* ary=new int[10000]; delete [] ary;

Garbage Collection 방법  객체를 가리키는 참조 변수가 null 로 지정되 거나 객체를 더 이상 참조하지 않을 때 gc 의 후보가 된다.  gc 의 후보가 된다고 해서 즉각적으로 gc 가 수행되는 것은 아니다.  여유 메모리가 부족하거나 사용자의 입력을 기다리는 경우와 같이 프로그램이 활동하지 않을 경우 gc 가 수행된다. 왜 ? gc 는 매우 복잡한 과정을 거쳐야 하므로 수 시로 gc 를 수행하면 프로그램 성능에 좋지 않다.

Garbage Collection 특징  Automatic memory management 라고 부르기도 함.  gc 는 프로그래머에 의해 구현될 수 없다.  gc 대상은 Object 이지 reference 가 아니다.  할당된 메모리를 명시적으로 해제할 수 없다.  gc 의 내부는 완벽이 캡슐화 되어, 그 동작을 알 수 없다.  gc 가 정확히 언제 수행되는지 알 수 없다.  다른 참조 변수가 참조하고 있다면 gc 의 대상이 아니다.

Garbage Collection 예제  1. gc 대상이 되는 경우 String str=new String(“scjp”); str=null; 참고. String str=new String(“aaa”); String str=“aaa”; 위 두 개의 수행은 같다.

Q1  Java 에서 유일한 unsigned data type 는 ?  그 값의 범위는 ?

Garbage Collection 예제  2. gc 대상이 되는 경우 String str; str=new String(“scjp”); str=new String(“scjd”);  같은 참조 변수 str 에 두번의 메모리 할당 이 수행되었다. 그렇다면 첫번째 할당된 메모리에 대한 gc 가 수행된다.

Garbage Collection 예제  3. gc 대상이 되는 경우 public void print(){ String str=new String(“aaa”); }  print() 함수에 진입한 후 리턴 될 때, str 이 reference 하는 문자열 “aaa” 는 더 이상의 참조가 없으므로 gc 의 대상이 된 다.

Garbage Collection 예제  3. gc 대상이 되지 않는 경우 public String print(){ String str=new String(“aaa”); return str; } public static void main(String args[]){ String myStr=print(); }  앞의 경우와는 다르게 이 경우에는 gc 의 대 상이 되지 못한다. myStr 이 reference 하기 때문이다.

Garbage Collection 예제  3. gc 의 대상이 아닌 경우 String str1=new String(“aaa”); String str2=str1; str1=null;  str1 을 null 로 할당 했다 하더라도, str2 가 참조를 하고 있으므로 gc 의 대상 이 아니다.

Q2 class Test { public Test(){ this.a=10; b=20; this.c=30; } private int a; private int b; private int c; } class MainClass{ public static void main(String args[]){ Test test=new Test(); System.out.println(test); } 다음과 같은 출력을 할 수 있도록 위 프로그램을 수정하세요. // 출력결과 a= 10; b= 20 c= 30

Q3  byte, long, double, char, int, short, float 다음을 묵시적 형 변환이 일어날 수 있는 순서로 나열 하라. Ex) short -> float -> …. -> ….

Q4 public static void main(String args[]){ int ary[]=new int[10]; try{ System.out.println(ary[num]); }catch(Exception e){ System.out.println("exception"); }finally{ System.out.println("finally"); } 1. num= -1 인 경우 출력 2. num= 5 인 경우 출력 3. num= 10 인 경우 출력

Garbage Collection class Test{ public Test(){ 파일 열기 작업을 한다. } Test test=new Test(); 위의 프로그램은 제대로 작성되지 못한 프로그램이다. 만약 test 에 null 이 할달 되거나 new Test(); 가 더 이상 참조 되지 않는다면, 생성자에서 작업한 파일 열기 작업에 대한 파일 닫기 작업을 수행하지 않게 된다. class Test{ public Test(){ 파일 열기 작업을 한다. } public fileClose(){ 파일 닫기 작업을 한다. } Test test=new Test(); 와 같으 프로그래밍 하였더라도 test.fileClose() 함수를 호출 하지 않을 가능성이 있다.

Garbage Collection class Test{ public Test(){ 파일 열기 작업을 한다. } protected void finalize() throws Throwable{ 파일 닫기 작업을 한다. } Test test=new Test(); Java.lang.Object 의 finalize 메소드를 overriding 하여, 객체가 소멸 될 때 반드시 수행해야 하 는 루틴을 담아 놓는다. finalize() 메소드는 gc 에 의해 해당 객체가 소멸될 때 호출되는 함수이다. 앞서 설명한 바와 같이 finalize 함수의 호출 시키는 java VM 이 결정한다.

Garbage Collection