Chap. 14 성능향상시키기 PS Lab. 이지연.

Slides:



Advertisements
Similar presentations
내 마음의 버 스 이천신하교회 청년부. 이름 : 한상훈 나이 : 30 살 종교 : 기독교 ( 모태신앙 ) 생활신조 : 인생은 한방 ! 로또나 사자 이상형 : 청순 가련한 모태미녀 특이사항 : 걸그룹 노래에 환장함 식스팩을 갖기엔 슬픈 몸을 타고 남.
Advertisements

객체지향프로그래밍 중간텀 울산대학교 Programming System Lab. 이태호. 목차 필수 요구사항 점검 – 클래스와 메서드, 맴버필드 ~ – 클래스는 머고 객체는 먼데요 – 주어진 소스는 어떤 의미가 있나여 필수 요구사항을 들어주자 ! – 주어진 소스에 어떤걸.
독서골든벨 2009 학년도 6 학년 1 학기 6-10 반. 1. 이야기 삼국유사 정대한 원효대사는 수행을 위해 떠나던 중 피곤하여 숲 속에서 잠이 들었다. 잠결에 너무 목이 마른 나머지 어디에 담겨있는 물을 맛있게 마셨나요 ?
두 손 들고 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 오직 주만이 나를 다스리네 오직 주만이 나를 다스리네 나 주님만을.
지하철 안내 앱 소개 제작자 : 손성준 P.S 이 사진은 내용과 관계없음을 명백히 알립니다.( 솔직히 전기동차라는 공통점이 있긴 하지만 ) 그리고 본인이 촬영하였음을 알립니다.
지금은 기도 하는 시간입니다 1. 송구영신예배를 위해서 2. ‘크리스마스 이브’ 행사를 준비하는 교육 기관을 위하여
단체교섭 보고 ※ 본교섭 ※ 실무교섭 구 분 날 짜 비 고 상견례 1월19일 단협 시작 본교섭
한국경제론 가을 Chap 10 비정규직 문제 국회의원 이경재 (前 국회환경노동위원장)
어서와 Java는 처음이지! 제3장선택과 반복.
EXEM ( ) LTW를 활용한 데이터 수집기 김경식.
10. 예외 처리.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
현대사회의 여성문제와 여성복지 3조 권경욱 강향원 황대인 변갑수 박창욱 김지현.
Chap05 상속 5.1 상속의 개요 5.2 멤버 변수의 상속 5.3 메소드의 상속과 오버라이딩(Overriding)
어서와 Java는 처음이지! 제1장 기초 사항.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
Programming for the java Virtual machine
고교평준화의 득과 실 김영주 이지영 최윤영.
어서와 Java는 처음이지! 제1장 기초 사항 IT응용시스템공학과 김형진 교수.
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
명품 JAVA Programming.
Power Java 제4장 자바 프로그래밍 기초.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
Power Java 제10장 배열.
자바 가상 기계 (Java Virtual Machine)
자바 5.0 프로그래밍.
CHAP 7. 메뉴와 대화상자.
이쁜 코드 작성하기 마이에트 레이더즈팀 중원.
6. 기본 클래스 프로그래밍 6 컴퓨터공학과 신동일.
윤 홍 란 4 장 클래스 작성 윤 홍 란
DataScience Lab. 박사과정 김희찬 (월)
This, static, final 지정 예약어 자바 4대 중첩 클래스
CHAP 6. 이벤트 처리.
2010년 직원연수 자료 제1차 : 4월 16일 ~ 17일 제2차 : 4월 23일 ~ 24일
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
12 검색.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Chapter 3 클래스. 최호성.
Java Virtual Machine Chapter 5. 제어문 Ps lab 김윤경.
DataScience Lab. 박사과정 김희찬 (월)
자바의 신 Volume 1 1부(1~3장) 자바의 신 메인 홈 : 자바의 신 페이스북: 자바의 신 문제 풀이 :
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
Chap10 다중 스레드 Section 1 : 스레드 개요 Section 2 : Thread 클래스와 스레드 생명주기
Web programming Chap 04 상속 김 정 석
프로그래밍 개론 Ⅰ 제 1장 . 서론 ①.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 09. C언어의 핵심! 함수!
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
프로그래머를 위한 첫걸음 JDBC Lecture 001 BY MINIO
JA A V W. 04.
Spring DI 이해 및 활용.
자바 5.0 프로그래밍.
JA V A W. 07 Sb.L.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
C# 10장. 참조형.
Chap. 8 자바 가상 머신의 클래스 로더 사용 PS Lab. 이지연.
6장 클래스(상속).
2015년 2학년 1반.
(제작자: 임현수)모둠:임현수,유시연,유한민
글로벌 교육 통신원 2015 해외대학 전공교육과정 우수사례 공모전 제목 소속(학과) 학번 성명.
제 14 장 응용 계층과 클라이언트-서버 모델 클라이언트-서버 모델 14.2 동시성 14.3 프로세스 14.4 요약.
Java 5장. 객체지향 개념 public class SumTest {
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는
나-는 믿음으로 주 얼굴 보리니- 아침에 깰 때에 주형상에 만족하리 나주님 닮기 원하네 믿음으로 주얼굴 보리라 -
자바 가상 머신 프로그래밍 Chapter 3. 메소드 작성하기 Pslab 오민경.
Presentation transcript:

Chap. 14 성능향상시키기 PS Lab. 이지연

빠른 자바 가상 머신 JIT(just-in-time)컴파일러 자바 가상 머신으로부터 해석되는 바이트 코드를 플랫폼에 맞는 네이티브 코드로 바꾸어줌 클래스가 로드된 후에 네이티브로 변환 컴파일시 각 명령어에 대해서 많은 최적화 수행

간단한 가비지 콜렉션 과정 지역 변수 배열과 피연산자 스택에서 참조하는 각 객체를 “유효함”의 상태로 체크 유효하다고 체크된 각 객체의 필드들도 유효하다고 체크 필드가 참조하는 다른 객체에도 체크 과정 반복

세대별 가비지 콜렉션 세대별 가비지 콜렉션 메모리 압축 : 객체가 사용 중인 공간을 한 곳에 몰아넣는 것 오랫동안 유효했던 객체는 계속적으로 유효할 것이라는 전제로 객체들을 세대별로 묶음 오래된 객체보다 새로운 객체를 더 자주 검사 메모리 압축 : 객체가 사용 중인 공간을 한 곳에 몰아넣는 것

가비지 콜렉션

참조 구현하기 방법 : 1)메모리상의 객체에 대한 단일한 포인터 사용 2)포인터에 대한 포인터(핸들)로 구현 핸들 방법 : 1)메모리상의 객체에 대한 단일한 포인터 사용 2)포인터에 대한 포인터(핸들)로 구현 핸들 장점 : 메모리 상에서 객체를 옮기는 것이 쉬움 (핸들만 갱신하면 되기 때문) 단점 : 한번의 참조를 위해서 두번의 과정이 필요

참조를 구현하는 두 가지 방법

바이트 코드 최적화 기술 상수의 사용을 늘린다. 길이를 감소시킨다. 루프를 풀어서 기술한다. 틈새 최적화

바이트 코드 최적화 기술(계속) < 상수의 사용을 늘린다 > P. 459 코드 참조 iload_1 -> bipush 32 상수 사용을 늘리기 힘든 경우 포인터 쉐도잉 : 다른 2개의 포인터가 메모리상의 같은 공간을 가리키고 있는 것

바이트 코드 최적화 기술(계속) < 길이를 감소시킨다 > 오래 걸리는 작업을 동일한 효과를 내면서 좀 더 짧게 대체한다는 것 곱셈연산을 대체시킴 x*32 -> x<<5 x*34 -> x<<5 + x<<1 int seconds_in_a_day = 60*60*24; bipush 60 imul bipush 24 ldc 86400

바이트 코드 최적화 기술(계속) < 루프를 풀어서 기술한다 > 루프 안의 내용을 실행하는 것보다 루프문의 조건을 테스트하는데 많은 시간이 걸리는 경우 P.462,463 코드 참조

바이트 코드 최적화 기술(계속) < 틈새 최적화 > 결과값으로 나온 바이트 코드를 보고 필요없는 명령어를 제거하는 것 P.464,465 코드 참조 P.466 [표 14.1]틈새 최적화 규칙 참조

인라이닝 invoke 명령어는 호출하려는 코드 자체로 바뀜 P.468,469 코드 참조 인자값을 스택에 넣고 새로운 스택 프레임을 생성하고 결과를 처리하는 데 드는 오버헤드를 줄임 P.468,469 코드 참조 오버라이드가 불가능한 경우에만 인라이닝 가능 메소드나 클래스가 final인 경우와 정적메소드인 경우에만 가능

필드 인라이닝 final 필드에 적용 class Teapot { public final static long TIME_TO_BREW=180000; void makeTea() { Thread.sleep(TIME_TO_BREW); } } .method makeTea()V ldc2_w 180000 <- getstatic Teapot/TIME_TO_BREW J 의 대체코드 imvokestatic java/lang/Thread/sleep(J)V return .end method class TeaParty void chat() { Thread.sleep(Teapot.TIME_TO_BREW); }