Hotspot JVM GC 엑셈컨설팅본부 /APM 팀김정태 개요 본문서는 Hotspot JVM 의 Garbage Collection 에대한기본적인동작방식과 Internal 한내용이포함되어있다. 본문내용을통해 WAS 의 Suspend 현상과 Application Thre

Size: px
Start display at page:

Download "Hotspot JVM GC 엑셈컨설팅본부 /APM 팀김정태 개요 본문서는 Hotspot JVM 의 Garbage Collection 에대한기본적인동작방식과 Internal 한내용이포함되어있다. 본문내용을통해 WAS 의 Suspend 현상과 Application Thre"

Transcription

1 Hotspot JVM GC 엑셈컨설팅본부 /APM 팀김정태 개요 본문서는 Hotspot JVM 의 Garbage Collection 에대한기본적인동작방식과 Internal 한내용이포함되어있다. 본문내용을통해 WAS 의 Suspend 현상과 Application Thread, Garbage Collection Thread 간의경합에대해이해하고나아가특정환경에적합한 Garbage Collector 를선택할수있는기본적인지식을제공할목적으로작성되었다. 1. Garbage Collection Heap storage for objects is reclaimed by an automatic storage management system(typically a Garbage Collector); objects are never explicitly deallocated. - Java Virtual Machine Speculation [JVMS2 1999] Heap 은 Object 를위한 Memory 공간이고 Garbage Collector 라고하는자동화된시스템에 의해 Heap 은재사용될수있다. 그리고 Object 는절대명시적으로해제되지않는다. 가. Introduction 앞서본 Garbage Collection 에대한 JVM Speculation 을부연설명을하자면, 이미할당된 Memory 는 Garbage Collection( 이하 GC) 에의해해제가되는데이때 Garbage 는 Heap 과 Method Area 에서사용되지않는 Object 를의미한다. 그리고소스상의 close() 는 Object 사용중지의사표현일뿐 Object 를 Memory 에서삭제하겠다는의미가아니다. 개발자는 System.GC() 를명시적으로사용하여 GC 를발생시킬수있지만이경우에는 Full GC 가발생한다. Part 2 APM 279

2 나. GC로인한문제점 GC 라는자동화메커니즘으로인해프로그래머는직접 Memory 를핸들링을할필요가없게되었다. 더불어잘못된 Memory 접근으로인한 Crash 현상의소지도없어지게되었으니더없이편리한기능이아닐수없다. 그러나 GC 는명시적인 Memory 해제보다느리며 GC 순간발생하는 Suspend Time 으로인해다양한문제를야기시킨다. 시스템의성격마다 Suspend Time 허용치는각각다르겠지만 GC 튜닝을실시할경우통상 Application 최적화이후 ( 생성오브젝트최소화등 ) 본격적인 GC 튜닝을진행한다. 다. Root Set과 Garbage Garbage Collection 은말그대로 Garbage 를모으는작업인데여기서 Garbage 란사용되지않는 Object 를말한다. 좀더명확히설명하면 Object 의사용여부는 Root Set 과의관계로판단하게되는데 Root Set 에서어떤식으로든 Reference 관계가있다면 Reachable Object 라고하며이를현재사용하고있는 Object 로간주하게된다. [ 그림 1] 최하단 Root Set 에서 Object 를참조하는형태 기술백서 White Paper

3 Root Set 은광의적개념으로서좀더구체적으로말하면아래와같이 3 가지참조형태를통해 Reachable Object 를판별한다. 1. Local variable Section, Operand Stack 에 Object 의 Reference 정보가있다면 Reachable Object 다. 2. Method Area 에로딩된클래스중 constant pool 에있는 Reference 정보를토대로 Thread 에서직접참조하진않지만 constant pool 을통해간접 link 를하고있는 Object 는 Reachable Object 이다. 3. 아직 Memory 에남아있으며 Native Method Area 로넘겨진 Object 의 Reference 가 JNI 형태로참조관계가있는 Object 는 Reachable Object 이다. 위의 3 가지경우를제외하면모두 GC 대상이된다. Reachable but not Live Object 란? Class Main { public static void main (String args[]) { Leak lk = new Leak(); for(int a=0; a< ; a++) { lk.addlist(a); lk.removestr(a); } } } Class Leak { ArrayList lst = new ArrayList(); public void addlist(int a) { lst.add( 가나다라마바사아자차카타파하 +a); } public void removestr(int i) { Object obj = lst.get(i); obj = null; } } Array List 에 String Object 를넣고 removestr() 메소드가 Object Reference 변수를찾아 null 로치환 Part 2 APM 281

4 실행하면 OutOfMemoryException( 이하 OOME) 이발생하면서비정상종료된다. 이유는 obj 변수로받은건 String Object 가아닌 Reference 값이기때문이다. null 로치환돼도 Array List 에들어간 String Object 가사라진건아니며더불어참조변수가없어서이들은앞으로사용되지않을것이다. 이를 Reachable but not Live Object 라고하며이들이많아지면 heap 에 Memory 릭발생했다고표현한다. GC 가수행된 Memory 의해지는할당된그자리에서이루어지며그로인해 Heap 의단편화같은문제가발생한다. JVM 에서는이러한단편화를해소하기위해 Compaction 같은알고리즘을사용한다. 결론적으로 GC 는 Heap 을재활용하기위해 Root Set 에서참조되지않는 Object(Garbage) 제거해가용공간을만드는작업이다. GC 는 Perl, Python, PHP, 닷넷에서도사용되는개념중하나이다. 2. Hotspot JVM Internal 가. Introduction Hotspot JVM 은기본적으로 Generational Collection 방식을사용한다. 즉 Heap 을 Object 의 Generation 별로 Young Area 과 Old Area 로구분하며 Young Area 은다시 Eden Area 과 Survivor Area 으로구분하여사용된다. GC 메커니즘은경험적지식 (Weak Generational Hypothesis 이라고도한다 ) 으로두가지가설을두고있는데첫째로대부분의 Object 는생성된후금방 Garbage 가된다 (high infant mortality). 둘째로 Older Object 가 Younger Object 를참조할일은드물다 라는것이다. 첫번째가설을보면새로할당되는 Object 가모인곳은단편화발생확률이높다고간주된다. Memory 할당은기존 Object 다음주소에서계속수행을하게되며 Garbage 는먼저할당된부분에서많이생길것이다. 이때 Sweep 작업 (Mark 되지않은 Object 를제거 ) 을수행하면단편화가발생하게되며이후 Compaction 처럼비싼작업을해야한다. 때문에 Object 할당만을위한전용공간인 Eden Area 을만들게된거고 GC 당시 Live 한 Object 들을피신시키는 기술백서 White Paper

5 Survivor Area 을따로구성한것이다. 즉 Garbage 가될확률이적은 Object 를따로관리한다 는것이다. Garbage 를추적하는부분은 Tracing 알고리즘을사용한다. 즉 Root Set 에서 Reference 관계를추적하고 Live Object 는 Marking 한다. 이러한 Marking 작업도 Young Generation 에국한되는데 Marking 작업은 Memory Suspend 상황에서수행되기때문이다. 전체 Heap 에대한 Marking 작업은긴 Suspend Time 을가져갈것이기때문이다. 그런데만약이런상황에서 Older Object 가 Young Object 를참조하는상황이있다고가정하면존재여부체크를위해 Old Generation 을모두찾아다닐수있고따라서 Suspend Time 도길어진다. 그렇기때문에 Hotspot JVM 은 Card Table( 이벤트프로그램 ) 이란장치를마련했다. TLAB 이란? [ 그림 2] Thread 들이 TLAB 을사용하여 Memory 에 Object 를할당하는과정 Object 할당은기존에할당된 Memory 번지바로뒤부터하게된다. 이때는 Free List 검색등부가적인작업없이신속하게작업이가능하다. 그러나반드시 Bump-the-pointer 같은기술로동기화작업이수반되어야한다. JVM 은 Multi Thread 기반이므로여러 Thread 가가장최근할당된 Object 뒤공간을동시에요청하면동기화이슈로문제가발생한다. Part 2 APM 283

6 Hotspot JVM 은 Bump-the-pointer 기술에 Thread Local Allocation Buffer( 이하 TLAB) 기술을추가로사용하는데 TLAB 은 Thread 마다할당주소범위를부여하여그범위내동기화작업없이빠른할당이가능하다 ( 그림 2 는 5 개의 Thread 를표현 ) 만약 TLAB 을사용하지않으면가장먼저요청한 Thread T1 이 Heap lock 을걸로 Allocation 수행하며다른 Thread 들대기하게될것이다. 단 TLAB 을 Thread 에게최초할당할때는동기화이슈가발생한다. Card Table 이란? [ 그림 3] Older Object 가 Young Object 를참조하는경우 Card Table 의활용 Card Table 이란 Old Generation 의 Memory 를대표하는별도 Memory 구조이다 (Old Generation 의일부는 Card Table 로구성되어있다 ). 만약 Young Generation 의 Object 를참조하는 Old Generation 의 Object 가있다면 Old Generation Object 의시작주소에카드 ( 일종의 Flag) 를 Dirty 로표시하고 (Dirty Card) 해당내용을 Card Table 에기록한다. 이후해당 Reference 가해제되면표시한 Dirty Card 도사라지게끔하여 Reference 관계를쉽게파악할수있게했다. 때문에 Hotspot JVM 은이러한장치를통해 Minor GC 수행중 Card Table 의 Dirty Card 만검색하면빠르게 Reference 관계를파악할수있으므로위에서설명한두번째가설을보완했다고할수있다. 참고로 Card 는 Old 의 Memory 512bytes 당 1bytes 의공간을차지한다 기술백서 White Paper

7 나. Hotspot JVM Heap 구조 [ 그림 4] GC 대상 Area GC 대상 Area 는 Young, Old Generation 과 Permanent Area 인데 Hotspot JVM 은각 Generation 별로각각 GC 를수행한다. 이때 Young Generation 에서발생하는 GC 를 Minor GC 라고한다. Young Generation 은빈번하게 GC 가수행되는영역이며성숙된 Object 는 Old Area 으로 Promotion 된다. 여기서성숙된 Object 란말은 Application 에서특정회수이상참조되어기준 Age 를초과한 Object 를말한다. Promotion 과정중 Old Generation 의 Memory 도충분하지않으면해당 Area 에도 GC 가발생하는데이를가리켜 Full GC(=Major GC) 라고한다. Permanent Area 의 Memory 가부족해도 GC 가발생할수있는데이때는너무많은수의 Class Object 가로딩되어 Free Space 가없어졌기때문이며 Permanent Area 가부족하면 Heap(Young + Old) 에 Free Space 많더라도 Full GC 발생한다. 참고로 Major GC 는 Suspend 시간을더길게가져간다. Part 2 APM 285

8 다. Hotspot JVM option [ 그림 5] Hotspot JVM Memory Options 옵션 설명 -Client Client Hotspot VM 으로구동한다.(Client Class) -Server Server Hotspot VM 으로구동한다.(Server Class) -Xmn<Size> / -Xmx<Size> Young Generation 의최대 / 최소 Size 설정한다. -XX:NewSize=<Size> Intel CPU 에서는 Default 640kbytes, 그외에 는 2.124Mbytes -XX:MaxNewSize=<Size> 1.4 버전이후 NewRatio 에따라자동계산한다. -XX:MaxPermSize Permanent Area 의최대 Size 설정한다. Default 64Mbytes -XX:SurvivorRatio=<value> 값이 n 이면 n:1:1(eden:survivor1:survivor2) 이다. Default 기술백서 White Paper

9 는 8 값이 n 이면 Young:Old 비율은 1:n -XX:NewRatio=<value> Client Class 는 Default 8 이다. Server Class 는 Default 2 이며 Intel 계열 CPU 를사용하면 Default 12 이다. Minor GC 는 Eden Area 뿐만아니라 Survivor Area 가 Full 되 도발생 Survivor Area 가 Minor GC 를유발하는비율을말하 -XX:TargetSurvivorRatio=<value> 며 Default 50 즉 Survivor Area 가 50% 만차도 Minor GC 발생한다. 높게지정하면 Survivor Area 활용도높아져 Minor GC 발생빈 도낮출수있다. - XX:MinHeapFreeRatio=<percent> 전체 Heap 대비 Free Space 가지정된수치이하면 Heap 을 - Xmx 로지정된수치까지확장한다. Default 40 ( 늘림 ) - XX:MaxHeapFreeRatio=<percent> 전체 Heap 대비 Free Space 가지정수치이상이면 -Xms 까지 축소한다. Default 70 ( 줄임 ) MinHeapFreeRatio 와 MaxHeapFreeRatio 는 -Xms 와 -Xmx 로지정한 Memory 크기와같으면아무런영향이없다. 일반적으로 Heap Size 최대 / 최소값을같게지정하는걸권장하는데 Memory 부족하면다르게설정하기도한다. 왜냐하면 Memory Size 를동적으로늘리고줄이는건성능에많은영향을미치기때문이다. Server Class 기준 Default 값동작방식 1. Default Old Area 크기는 Young Area 크기의두배이다. Survivor Area 크기는 Young Area 크기의 1/10 이다. Part 2 APM 287

10 Survivor Area 의사용률이 50% 를넘으면 GC 발생한다. Permanent Area Default Max 값은 64Mbytes 이다. 최초 Young Area 크기는약 2M, 이후 NewRatio 값에의해최대값이조정된다. 전체 Heap 에서 Free Size 가 40% 이하면 Heap Size 증가하고 70% 이상이면 Heap Size 감소한다. JVM 의최대, 최소값설정을안하면기본 64MB 를최대 Memory 로지정한다. 3. Hotspot JVM 의 Garbage Collector 가. Introduction 업무요건이복잡해지고시스템이점점거대해지면최근에는자연스럽게 JVM Heap Size 설정이커지게되었다. 그러나그로인해 GC 로인한 Suspend 현상도이슈로대두되게되었다. Hotspot JVM 은기본적으로 Generation 별로다른 Garbage Collection 알고리즘을선택할수있다. 1) Garbage Collector 관련옵션 기술백서 White Paper

11 간단히설명하면기본적으로 Parallel Collector 는모든 Resource 를투입하여 Garbage Collection 를빨리끝내는전략으로대용량 Heap 에적합하다. CMS Collector 는 Suspend Time 을분산시켜채감 Pause Time 줄이고자할때사용된다. Incremental Collector 는 Low Pause Collector 에속하는데현업에서는거의사용안한다. JAVA 7 에서는 Garbage First Collector( 이하 G1 Collector) 를사용할수있는데 (JAVA 6 에서도선택가능 ) Generation 을물리적으로구분하지않고 Region 이라는단위로쪼개서관리를한다. G1 Collector 는거의 Real Time 에가깝게 Suspend Time 을감소시킬수있지만아직안정성이검증되지않아많은사이트에서잘사용되지는않는다. 표에서보다시피각 Collector 마다다양한알고리즘을사용하고있는데최근추세로는결국 Parallel-Concurrent 로수렴되고있다. 참고로 IBM JVM 도역시동일한추세를보이고있다. 나. Serial Collector Young / Old Generation 모두 Serial 로 Single CPU 를사용한다. 즉 1 개의 Thread 를가지고 GC 를수행한다. Client Class 의기본 Collector 이며향후더이상지원하지않을예정이라고한다. 다. Parallel Collector Multi Thread 가동시에 GC 를수행하며적용범위는 Young Area 에국한된다. Old Area 은 Mark-and-Compacting 알고리즘이사용되며 Single Thread 방식이다. Server Class 의 JVM 에서 Default Collector 이며 Client Class 에서도옵션설정으로사용이가능하다. 단 CPU 가 1 개라면해당옵션무시된다. 1) Young Area 의알고리즘 : Parallel Copy [ 그림 6] Copy 알고리즘비교 Part 2 APM 289

12 Eden, Survivor Area 의 Live Object Copy 작업을여러 Thread 가동시수행 (Suspend 현상발생 ) 한다. 투입한 Resource 만큼 Suspend Time 을단축할수있다. Memory 특성상같은 Memory 공간을두 Thread 가접근하면 Corruption 발생할수있지만 Hotspot JVM 은 PLAB(Parallel Allocation Buffer) 라는 Promotion Buffer 를마련하여이런 Corruption 을회피하고있다. PLAB 이란? GC Thread 가 Promotion 시 Thread 마다 Old Generation 의일정부분을할당 (1024bytes 단위 ) 하고다사용하면다시 Buffer 를재할당한다. 단 Old Area 에단편화가발생할수있는데이는많은 Thread 가자신의버퍼를할당받고사용하지않거나어쩔수없이발생하는버퍼내자투리공간때문이다. TLAB 과 PLAB 2. TLAB 은 Young Area 의 Fast Allocation 을위한것 (Eden Area) PLAB 은 Promotion 과정중동기화문제를회피 (Old Area) TLAB 는 4K 단위로, PLAB 은 1K 단위로할당 기술백서 White Paper

13 옵션 설명 -XX:+UseParallelGC Parallel Collector 사용옵션이다. -X:ParallelGCThreads= 개수 Parallel GC Thread 개수설정한다. Default 는 CPU 개수 설정하면 Eden Area 의 Reachable Object 는바로 -XX:+AlwaysTenure Old Area 으로 Promotion 된다. Parallel Collector 사용시에만유효하다. -XX:MaxTenuringThreashOld=0 과같음 (age 를 0 으로해서바로바로승격시키겠다는의미 ) Survivor Area 가 Full 되는경우를제외하고 Object -XX:+NeverTenure 를 Promotion 안되게설정하는옵션이다. Parallel Collector 사용시에만유효하다. (age 자체를없애서승격이안되게한다.) -XX:MaxGCPauseMillis= 값 설정값이하로 GC 의 Pause Time 을유지하라는설 정이다. Application 수행시간대비전체 GC 의시간비율을 -XX:GCTimeRatio= 값 말한다. 9 로설정하면 1/(1+19) = 5% Default 는 99(1% 의 GC Time Ratio 를의미 ) -XX:+UseAdaptiveSizePolicy GC 횟수, Generation 의각 Area 비율, free Heap Size 등통계정보를바탕으로 Young, Old Generation 의크기를자동설정하는옵션이다. Part 2 APM 291

14 -XX:YoungGenerationSizeIncrement= 값 Young Generation 의확장비율설정옵션이다. Default 20(20% 씩증가 ) Heap 의 Growing Percent 대비 Shrink 를수행할 -XX:AdaptiveSizeDecrementScaleFactor= 값 Ratio 의미 값이 4 이고 Heap growing percent 가 20 이면 20/4 = 5 % 가된다. Default 는 4 이므로 Default shrink Ratio 는 5% GC 로확보해야하는최소 Free Space 설정한다. -XX:GCHeapFreeLimit= 값 값은최대 Heap Size 에대한비율을의미한다. Default 는 5(%) OOME 방지에도움이되는옵션이다. -XX:MaxHeapFreeRatio=<percent> 전체 Heap 대비 Free Space 가지정수치이상이면 -Xms 까지축소하는옵션이다. Default 70 ( 줄임 ) 2) Parallel Collector 의옵션 Default 값동작방식 3. Application 수행시간대비 GC 수행시간은 Default 1% 다. Application 수행시간의 90% 못넘는다. Young Area 은확장할때 20% 씩증가하고 5% 씩감소한다. -XX:+UseAdaptiveSizePolicy 를쓰면 Heap 크기가자동설정된다. GC 를했으면반드시최대 Heap Size 대비 5% 의 free 공간확보해야한다. 라. CMS Collector CMS Collector 는 Suspend Time 을분산하여응답시간을개선한다. 비교적자원이여유있는 상태에서 GC 의 Pause Time 을줄이는목적이며 Size 가큰 Long Lived Object 가있는경우 기술백서 White Paper

15 에가장적합하다. Young Area 에는 Parallel Copy 알고리즘, Old Area 에는 Concurrent Mark-Sweep 알고리즘이사용된다. 1) Old Area 의 Concurrent Mark-Sweep 알고리즘 [ 그림 7] CMS Collector 의 Old Area 단계별동작방식 - Initial Mark : Single Thread 만사용한다. Application 이중지되고 Application 에서직접 Reference(Root set 에서한단계의 Reference 관계 ) 되는 Live Object 만구별한다. Suspend 상태지만빠르다. - Concurrent Mark : Single Thread 만사용한다. Application 은수행되고 GC Thread 외 Working Thread 는 Application 수행이가능하다. Initial Mark phase 에서선별된 Live Object 가 Reference 하고있는 Object 를추적해 Live 여부구별한다. - Remark : Multi Thread 가사용되며 Application 중지된다. 이미 Marking 된 Object 를다 시추적, Live 여부확정, 모든 Resource 를투입한다. Part 2 APM 293

16 - Concurrent Sweep : Single Thread 만사용한다. Application 은수행되고최종 Live 로판명된 Object 제외한 Dead Object 를지운다. 단 Sweep 작업만하고 Compaction 작업수행안한다. 항상 Compaction 작업은 Heap 의 Suspend 를전제로하는데반복된 Sweep 은단편화를유발한다. 때문에 Free List 를사용하여단편화를줄이는노력을한다. [ 그림 8] Heap 의단편화모습 Free List 승격 (Promotion) 할당을할때 Young Area 에서승격된 Object 와크기가비슷한 Old Area 의 Free Space 를 Free List 에서탐색하게된다. 또한승격되는 Object Size 를계속통계화하여 Free Memory 블록들을붙이거나쪼개서적절한 Size 의 Free Memory Chunk 에 Object 할당한다. 그러나이러한작업은 GC 수행중 Young Area 에부담을주게되는데그이유는 Free List 에서적절한 Chunk 크기를찾아 Allocation 해야되기때문이며시간도오래걸린다. 즉이말은곧 Eden/Survivor Area 에서의체류시간이길어진다는의미이다. Compaction 작업을수행하면 Old Area 에올라온 Object 를그냥순서대로할당하여 Fast Allocation 이가능한데 Compaction 이너무고비용이라손익을따져봐야한다. Promotion 이빈번하지않다면성능이득이있다 기술백서 White Paper

17 2) CMS Collector 의 Floating Garbage 문제 : Old Area [ 그림 9] CMS Collector 의 Old Area 동작방식 CMS Collector 는단편화외 Floating Garbage(Garbage 면서수거되지않고붕뜬 Garbage) 문제가있다. 위그림을설명하면다음과같다. a, b, c 는 Reachable Object 로판명, d 는 Dead Object 이다. a, b, c 가참조하는 1, 2, 3 를각각추적하여참조관계를알게된다. 이단계는 Application Thread 도같이일을하는 Concurrent 단계이다. 기존 Reachable Object 가 Root set 을잃고 Dead Object 가될수있다. 또 e, f, 5, 6 이 Promotion 되서 Old Area 에등장한다. 그러나 CMS 에서는 1 단계에서 Live Object 로인정된 Object 만 GC 대상이다. 만약여기서 e, 5 가승격되자마자작업종료되면 Concurrent Mark 단계가끝나기전에 Dead Object 가된다. 이를 Float Garbage 라고한다. Part 2 APM 295

18 f, 6 은 Old Area 에계속남아있다. Float Garbage 는다음번 GC 에서사라지며 f, 6 도다음 GC 의 Initial Mark 대상이다. Float Garbage 는 GC 완료시점까지 Garbage 가완벽히사라지지않음을말하는데이는잠재적으로 Old Area 확장시키게되는요인이다. 또한 CMS Collector 라고하더라도 Suspend Time 은완벽히못없앤다. Young Area 은아직 Suspend Time 을가정, Young Area 의 GC 와 CMS 의 Remark phase 연달아수행되면의도한 Suspend Time 보다길어질것이다. 그래서 CMS 는 GC 에서 Schedule 을고려한다. CMS Collector 의 Scheduling 4. GC 시간과 Old Area 가 Full 되기까지남은시간같은정보등을계속수집한다. Remark phase 가 Minor GC 중간지점에오도록조정한다. Initial Mark phase 는빨라서 Minor GC 와겹쳐도무시할만하다. 만약 Old Area 가 Full 된상태에 GC 를수행하면 Concurrent 단계에서 OOME 발생가능크다. 때문에 Old Area 가 Full 에근접하는시점과 GC 발생주기가비슷해지면 GC 를시작한다. 그외에도 Old Area 점유율을지정해해당값이넘으면 GC 를수행한다.(Default 는 68%) 이값이작으면 GC 를더자주수행한다. 결론적으로 CMS Collector 는 Old Area 에 Object 할당할때 Free list 를사용해단편화를최소화하고 Scheduling 으로 Remark 단계가 Minor GC 중간지점에오도록조정하여 OOME 를방지한다. 3) CMS Collector 옵션 옵션 설명 -XX:+UseConcMarkSweepGC CMS Collector 를사용한다. -XX:+UseParNewGC Young Area 의 GC 를 Parallel 로수행한다. Old Area 가 CMS 를사용할때만의미있다. -XX:+CMSParallelRemarkEnabled Remark 를병렬로수행한다 기술백서 White Paper

19 -XX:CMSInitiatingOccupancyFraction= 값 Old Area 점유율을지정한다. 1~100 까지가능, 이값넘으면 GC 시작, Default 68 -XX:CMSExpAvgFactor= 값 CMS 통계를위한지수평균낼때가중치, 1~100, Default 25 -XX:+UseCMSInitiatingOccupancyOnly CMSInitatingOccupancyFraction 옵션에따른 GC 만수 행하도록지정한다. 4) Incremental Mode of CMS Collector [ 그림 10] 2 Core 의 CMS Collector 동작방식 Part 2 APM 297

20 CMS Collector 는 Pause Time Goal 가지는데기본적으로 GC 단계를세분화해 Concurrent 한진행을도모한다. Concurrent 작업이큰실효가없으면 GC 의 Pause Time 줄이는효과나타나지않는다. GC 전과정동안 1 개의 CPU 가 GC Thread 에의해내내점유되는데이러면 Concurrent 작업은나머지 1 개 CPU 로수행하게되므로 Concurrent 의의미가퇴색되게된다. 그래서 CMS Collector 는별도 Incremental 모드지원하는데이는보다정교한 Scheduling 을한다. Concurrent phase 를작은시간단위로쪼개서 Minor GC 와겹치지않게한다. 또 Duty cycle 을둬한개의 CPU 를점유하는시간제한을둬서 GC 의일량을조절한다. Incremental CMS Collector 는기본 Duty cycle 을자동계산한다 ( 수동으로설정가능 ) 5) Incremental mode's options 옵션 설명 -XX:+CMSIncrementalMode CMS Collector 을선택한상태에서사용가능하다. Default false 이며설정하면 -XX:CMSInitialingOccupancyFraction 옵션은무시된다. -XX:+CMSIncrementalPacing Duty 사이클자동설정을한다. Default false Duty cycle 을수동으로조정한다. 값은연속된 Minor GC 사이의시간 -XX:CMSIncrementalDutyCycl e= 값 비율이다. Default 50(Minor GC 끝나고다음 Minor GC 시작할때의시간의 1/2(50%) 지점지나는시점 ) 1~100, -XX:+CMSIncrementalPacing 사용하면자동설정초기값은 Default 인 50 으로설정된다. -XX:CMSIncrementalDutyCycl emin= 값 Duty cycle 을자동설정으로할때 Duty cycle 의하한선설정한다. Default 기술백서 White Paper

21 Free Space 의가중치, 값커지면 Old Area 의 Free Space 는실제보 -XX:CMSIncrementalSafetyFa ctor= 값 다작게산출, 작게할수록실제 Free Space 와동일수준설정한다. De fault 10 CMS_free_dbl = CMS_free_dbl*( CMSIncrementalSafety Factor)/ XX:CMSIncrementalOffset= 값 Duty cycle 을두 Minor GC 사이의오른쪽인새로시작하는 Minor GC 쪽으로이동시키는값을지정한다. Default 0 마. Parallel Compaction Collector Parallel Collector 에서 Old Area 에새로운알고리즘 (Mark and compact -> Parallel compacting) 이추가된개념으로 Multi CPU 에서유리하다. Old Area 의 Collection 시간감소시켜효율증가하나몇몇 Application 이 Large system 을공유해 CPU 를확실히점유못하면오히려제성능발휘하지못한다. 이경우 Collection Thread 개수를줄여서사용한다. 1) Parallel Compaction 알고리즘 : Old Generation Part 2 APM 299

22 [ 그림 11] Parallel Collector 의 Old Generation 동작방식 - Mark phase : [ 그림 12] Parallel Compaction Collector 의 Mark phase 단계동작방식 Reachable Object 를체크하마 Parallel 작업으로수행된다. Old Area 의 Region( 논리적구 역, 2kbytes 정도의 chunk) 이라는단위로균등하게나눈다. Region 구분되면 Collection 기술백서 White Paper

23 Thread 들은각각 Region 별로 Live Object 를 Marking 한다. 이때 Live Object 의 Size, 위치 정보등 Region 정보가갱신된다. 이정보들은각 Region 별통계를낼때사용한다. - Summary phase : Mark phase 로 Compaction 의일량을산정한다. [ 그림 13] Parallel Compaction Collector 의 Dense Prefix 설정모습 하나의 Thread 가 GC 를수행, 나머지는 Application 을수행, Summary 단계가 Mark 단계결과를대상으로작업을수행한다. Region 단위이며 GC Thread 는 Region 의통계정보로각 Region 의 Density 평가한다. Density 는각 Region 마다 Reachable Object 의밀도를나타내는데 Density 를바탕으로 Dense prefix 를설정하게된다. Dense prefix 는 Reachable Object 의대부분을차지한다고판단되는 Region 이어디까지인가구분하는선이며더불어다음단계의대상을구분해준다. Dense premix 왼편 (Memory 번지작은쪽 ) 에있는 Region 은이후 GC 의대상에서제외, 나머지만 Compaction 이수행된다. Hotspot JVM 에서 Compaction 은보통 Sliding Compaction 을의미하는데이는 Live Object 를한쪽방향으로이동시킨다. 오랜기간참조된 Object 는더오래 Heap 에머무를가능성이큰데이를전제로어느지점까지의 Object 는거의 Garbage 되지않을확률이높고그게왼쪽으로갈수록높아진다. 즉 Parallel Compaction Collector 는 Region 별 Density 를평가하고 GC 를수행할범위를정하는 (Dense prefix) 작업을해 Compaction 의범위줄여결과적으로 GC 소요시간줄인다. Dense prefix 설 Part 2 APM 301

24 정작업이끝나면 Compaction 의대상이되는 Region 의 First Live Object 주소를찾아저장 작업을수행한다. - Compaction phase : Summary 된데이터를기반으로 Compaction 수행한다. [ 그림 14] Parallel Compaction Collector 의 Compaction phase 동작방식 Heap 을잠시 Suspend 상태로만들고 Thread 들이각 Region 을할당받아 Compaction 을수행한다. Compaction 작업은 Garbage Object 를 Sweep 하고 Reachable Object 를왼편으로몰아넣는것이다. 작업은 Destination Region, Source Region 각각구별하여작업을수행한다. 위그림에서 Dense prefix 이후 Region 들이 Destination 과 Source 로구분한다. ( 마지막 Region 은모두 Garbage Object 로만되어서별도구분하지않은것이다.) Region 마다배정된 Thread 가 Garbage Object 를 Sweep 한다. Thread1 은 Destination Region 의 Garbage Object 를 Sweep, Thread2 는마지막 Region 을 Sweep 한다. Source Region 외 Region 에는 Garbage 사라지며 Destination Region 에는 Live Object 만남게되고 Thread 기술백서 White Paper

25 이 Source Region 의 Garbage 들을수거한다. 마지막으로 Source Region 에남겨진 Live Object 는 Destination Region 으로이동한다. 2) Parallel Compaction Collector's 옵션 옵션 설명 -XX:+UseParallelOldGC 활성화옵션이다. -XX:+UseParallelOldGCCompa cting Parallel Compaction Collector 사용시설정한다. Parallel Compaction 사용여부에해당한다. Default true -XX:+UseParallelDensePrefixU pdate Summary phase 에서 Dense prefix 를매번갱신할지에대한설정한 다. Default true 바. Garbage First Collector 앞으로는 G1 Collector 가 CMS Collector 를대체할전망이다. CMS Collector 에비해 Pause Time 이개선되었고예측가능한게장점이다. Young Area 에집중하면효율이좋으나 CMS 처럼 Old Area 의단편화가있으며 Freelist 사용의문제점과 Suspend Time 가길어지는현상등이있다. G1 은물리적 Generation 구분을없애고전체 Heap 을 1Mbytes 단위 Region 으로재편한다. Parallel Compaction Collector 의 Region 단위작업과 Incremental 의 Train 알고리즘을섞어놓은느낌이다. Mark 단계에서최소한의 Suspend 시간으로 Live Object 골라내는건 Parallel Compaction Collector 와비슷하다. Region 별로순차적인작업이진행되고 Remember set 을이용한다. Garbage First 라는의미는 Garbage 로만꽉찬 Region 부터 Collection 을시작한다는의미로발견되자마자즉각 Collection 을한다. Garbage Object 가대부분인 Region 의경우 Live Object 는 Old Region 에서다른 Old Region 으로 Compaction 이이루어진다. G1Collector 에서 Young, Old Area 은물리적개념이아니고 Object 가 Allocation 되는 Region 의집합을 Young Generation, Promotion 되는 Region 의집합을 Old Generation 이라고한다. Part 2 APM 303

26 G1 Collector 의기본적인 GC 메커니즘 5. 전체 Heap 을큰네모로표현했고, 작은네모가 Region 을의미한다. 음영이들어간작은네모는 Old Generation 의 Region, 음영이들어가지않은네모는 Young Generation 의 Region 을의미한다. 3 표시는 Young Generation 에서방금 Copy 된 Survivor Region 이다. 4 표시는방금 Promotion 되어새로 Old Generation 이된 Region 이다. Minor GC 가발생하면 Young Area 의 Region 들을대상으로 Reachable Object 를찾고 A ge 가되지않은 Object 는 Survivor Region 으로 Copy 한다. Promotion 의대상 Object 는 Old Generation 으로 Copy 한다. 기존 Young Generation Region 은 Garbage 로간주해 Region 단위로할당을해지한다. Young Area GC 끝나면바로 Old Area GC 시작하는데단 Heap 전체에대한 GC 는아니며철저히 Region 단위이다. GC 로인한 Suspend 현상도해당 Region 을사용하는 Thread 에국한된다. G1 Collector 가 Region 내에 Reference 를관리하는방법은 Remember set 이용한다. 전체 Heap 의 5% 미만공간을각 Region 의참조정보를저장하는 Remember set 으로할당한다. Remember set 은 Region 외부에서들어오는참조정보를가지고있다. 이로인해 Marking 작업시 trace 일량줄여줘 GC 효율을높이게된다. 1) Garbage First Collector 의 Garbage First Collection G1 Collector 의 Garbage Collection 은 4 단계, 세부적으로는 6 단계이다 기술백서 White Paper

27 [ 그림 15] G1 Collector 의단계별동작방식 기본적으로 Allocation 때 Memory 압박이생기거나임계값이초과될때마다 GC 발생한다. 2) Young GC GC 는 Young Area 에서부터시작하며 Minor GC 와동일한개념이다. Suspend Time 이존재하며 Multi Thread 가작업한다. Live Object 는 Age 에맞게 Survivor Region, Old Region 으로 Copy 되며기존공간은해지된다. 이후새로운 Object 가할당되는 Young Region 은 Survivor Region 과그근처비어있는 Region 이된다. 3) Concurrent Mark phase (Mark -> Remark) : Old Area GC 시작 Part 2 APM 305

28 [ 그림 16] G1 Collector 의 Concurrent Mark phase 이후모습 - Marking 단계 : Single Thread, 전체적으로 Concurrent, 이전단계때변경된정보바탕으 로 Initial Mark 빠르게수행한다. - Remarking 단계 : Suspend 있고전체 Thread 가동시작업, 각 Region 마다 Reachable Object 의 Density 를계산, 그후 Garbage Region 은다음단계로안넘어가고바로해지된다. 여기서는 CMS 보다빠르게진행한다. Concurrent Mark phase 에서는 snapshot-at-the-beginning(satb) Marking 알고리즘사용한다. 이는 GC 를시작할당시 Reference 를기준으로모든 Live Object 의 Reference 를추적하는방식이다. 단 Mark 작업은 Concurrent phase 이므로 Reference 가계속변경된다. G1 Collector 는위작업을위해 write barrier 를이용, 각 Reference 의생성 / 분리를기록한다. 이기록은 GC 시작시만들어진 snapshot 과비교되어 Marking 작업을빠르게수행한다. 4) Old Region reclaim phase (Remark -> Evacuation) 기술백서 White Paper

29 [ 그림 17] G1 Collector 의 Old Region reclaim phase 이후모습 - Remark 단계 : Concurrent 작업, Multi-Thread 방식, GC 를위해 Live Object 의비율이낮 은몇개의 Region 골라낸다. - Evacuation Pause 단계 : 독특하게 Young Area 의 GC 를포함, 앞의 Remark 단계에서골라낸 Old Region 은 Young Region 과같은식으로 Evacuation 한다. 원표시의 Region 들이 Evacuation 의대상이며하얀빗금이 Old Region, 나머지는 Young Region 이다. Young Region 은 GC 의첫단계인 Young GC(Evacuation) phase 의결과로생성된 Survivor Region 과그근방의 empty Region 들에 Object 가 Allocation 되생긴 Region 인데여기에 Remark 에서선택된 Old Region 들까지 Evacuation 단계에서같이 Collection 된것이다. 결과로좌측상단으로 Survivor Region 과 Old Region 이하나생성된다. Old Region reclaim phase 가끝난후 Heap 에몇개의 Garbage Object 만존재하는, Live Object 의 Density 가비교적높은 Region 들만남게된다. 이들도언젠간 GC 될것이다. 5) Compaction phase 다른 Compaction 과달리 Concurrent 작업을수행한다. Region 단위로작업을수행하니까가 능한일이다. Compaction 의주목적은 Free Space 를병합해단편화방지하는것이다. 많은 수의 Region 을균등하게조금씩사용하게되는부작용을방지하는것. 6) Garbage First Collector's option Part 2 APM 307

30 옵션 설명 -XX:+UseG1GC 활성화옵션이다. -XX:+UnlockExperimentalVMOptions JAVA 1.6 에서는해당옵션을같이사용해주어야한다. 4. GC 튜닝 가. " 모든 Java 기반의서비스에서 GC 튜닝을해야할까?" -Xms 옵션과 Xmx 옵션으로 Memory 크기를지정했다. -Server 옵션이포함되어있다. 시스템에 Timeout 로그와같은로그가남지않는다. 위와같은경우라면기본적인설정도되어있지않으므로 GC 옵션을통한조정이필요한상황이라고할수있다. 단 GC 튜닝과는별개로 GC 튜닝을하는이유가무엇인지근본적인원인을생각해보자. Java 에서생성된 Object 는 Garbage Collector(Garbage Collector) 가처리해서지운다. 생성된 Object 가많으면많을수록 Garbage Collector 가처리해야하는대상도많아지고, GC 를수행하는횟수도증가한다. 즉운영시스템이 GC 를적게하도록하려면 Object 생성을줄이는작업이동반되어야한다 예를들면첫째로 String 대신 StringBuilder 나 StringBuffer 를사용해야한다. 문자열을변경할경우 String 은 Object 자체를복사해서값을변경하므로 Heap 에 Object 가계속증가하는반면 StringBuilder 나 StringBuffer 는내부적으로 Object 복사가이뤄지지않고단지 Object 가가지고있는값만변경된다. 둘째로로그를최대한적게쌓도록하는것이좋다. 하지만어쩔수없는현실도있다. 대용량의 XML 파일 Parsing 은 Memory 를가장많이사용한다. 아무리 String 을최대한사용안하고 Log 처리를잘하더라도, 10~100 MB 짜리 XML 파일을 Parsing 하면엄청난임시 Memory 를사용한다. 그렇다고 XML 을사용하지않기는어렵다 기술백서 White Paper

31 나. GC 튜닝의목적 GC 튜닝의목적은궁극적으로 System 의 Suspend Time 감소에있으며세부적으로나눠보면첫째로 Old Area 으로넘어가는 Object 의수를최소화하는것이며둘째로 Full GC 의실행시간을줄이는것이다. 다. Old Area으로넘어가는 Object의수최소화의중요성 JDK 7 부터본격적으로사용할수있는 G1 Collector 를제외하고 Hotspot JVM 에서제공하는모든 GC 는 Generational GC 이다. 즉 Eden Area 에서 Object 가처음만들어지고 Survivor Area 을오가다가끝까지남아있는 Object 는 Old Area 으로이동한다. 간혹 Eden Area 에서만들어지다가크기가커져서 Old Area 으로바로넘어가는 Object 도있긴하다. Old Area 의 GC 는 New Area 의 GC 에비하여상대적으로시간이오래소요되기때문에 Old Area 으로이동하는 Object 의수를줄이면 Full GC 가발생하는빈도를많이줄일수있다. New Area 의크기를잘조절함으로써큰효과를볼수는있다. 라. Full GC 시간줄이기 Full GC 의실행시간은상대적으로 Minor GC 에비하여길다. 그래서 Full GC 실행에시간이오래소요되면 ( 통상 1 초이상이면오래걸렸다고본다.) 연계된여러부분에서타임아웃이발생할수있다. 그렇다고 Full GC 실행시간을줄이기위해서 Old Area 의크기를줄이면자칫 Out Of Memory Exception 이발생하거나 Full GC 횟수가늘어난다. 반대로 Old Area 의크기를늘리면 Full GC 횟수는줄어들지만실행시간이늘어난다. Old Area 의크기를적절하게설정해야한다. 마. GC의성능을결정하는옵션기본적으로 -Xms 옵션, -Xmx 옵션, -XX:NewRatio 옵션을사용해야한다. 특히 -Xms 옵션과 -Xmx 옵션은필수로지정해야하는옵션이다. 그리고 NewRatio 옵션을어떻게설정하느냐에따라서 Permanent Area 의크기가조정되고따라서 GC 성능에도많은차이가발생한다. Perm Part 2 APM 309

32 Area 의크기는 OutOfMemoryException 이발생하고, 그문제의원인이 Perm Area 의크기 때문일때에만 -XX:PermSize 옵션과 -XX:MaxPermSize 옵션으로지정해도큰문제는없다. 다음으로 Collector 를결정해야한다. 바. GC 튜닝의절차 1) GC 상황모니터링 가장쉽게 GC 상황을모니터링하는방법은 jstat 명령어를활용하는방법이다. 해당명령을이용해 Append 로파일에로그내역을쌓게하여추이를관찰할수있다. 기본적으로가장많이사용하는방법은 verbosegc 옵션과 -Xloggc:< 파일위치 > 옵션을사용하여 JVM 에서로그를떨구도록설정하는방법이다. 본문서에서는 InterMax 를활용하여 GC 추이를관찰하고자한다. [ 그림 18] InterMax 에서 GC 모니터링 2) 모니터링결과분석후 GC 튜닝여부결정 분석한결과를확인했는데 GC 수행에소요된시간이 0.1~0.3 초밖에안된다면굳이 GC 튜닝이필요없을수있다. 하지만 GC 수행시간이 1~3 초, 심지어 10 초가넘는상황이라면 GC 튜닝을진행해야한다. 그런데만약 Java 의 Memory 를 10GB 정도로할당해서사용하고있다면 GC 튜닝전에시스템의 Memory 를왜높게잡아야하는지에생각해봐야만한다. 만약 Memory 를 1GB 나 2GB 로지정했을때 OutOfMemoryException 이발생한다면 Heap 덤프를떠서그원인을확인하고문제점을제거해야만한다 기술백서 White Paper

33 3) GC 방식지정및결과분석 GC 옵션을지정하고적어도 24 시간이상데이터를수집한후에분석을실시한다. 로그를분석 해 Memory 가어떻게할당되는지확인하며 GC 방식 /Memory 크기를변경해가면서최적의옵 션을찾아나간다. 사. 일반적으로 GC 튜닝이필요없는수치 Minor GC 의처리시간이 50ms 내외 Minor GC 주기가 10 초내외 Full GC 의처리시간이보통 1 초이내 Full GC 주기가 10 분에 1 회 절대값은아니며서비스상황에따라다르다. Full GC 처리속도가 0.9 초가나와도만족하는서비스가있고, 그렇지않은서비스도있다. 따라서, 이와같은값을확인하고서비스의특성에따라 GC 튜닝작업을진행할지결정한다. 주의할점은 Minor GC 와 Full GC 의시간만보면안된다. GC 가수행되는횟수도확인해야한다. 만약 New Area 의크기가너무작게잡혀있다면 Minor GC 가발생하는빈도도매우높을뿐만아니라 (1 초에한번이상인경우도있음 ) Old Area 으로넘어가는 Object 의개수도증가하게되어 Full GC 횟수도증가한다. 아. GC 방식지정 GC 방식은 Hotspot JVM 을기준으로총 5 가지가있다. 이중에서어떤방식을선택해야한다는원칙은없지만가장좋은방법은 3 가지를다적용해보는것이다. 하지만, 한가지확실한것은 CMS GC 가다른 Parallel GC 보다빠르다는것이다. 그렇다면그냥 CMS GC 만적용하면되겠지만 CMS GC 가항상빠른것은아니다. 일반적인 CMS GC 의 Full GC 는빠르지만 Concurrent mode failure 가발생하면다른 Parallel GC 보다느리다. Parallel GC 와 CMS GC 의가장큰차이점은 Compaction 작업여부이다. Compaction 작업은 Memory 할당공간사이에사용하지않는빈공간이없도록옮겨서 Memory 단편화를제거하는작업이다. Parallel Part 2 APM 311

34 GC 방식에서는 Full GC 가수행될때마다 Compaction 작업을진행하기때문에시간이많이소요된다. 하지만, Full GC 가수행된이후에는 Memory 를연속적으로지정할수있어 Memory 를더빠르게할당할수있다. 반대로 CMS GC 는 Compaction 작업을기본으로수행하지않는다. Compaction 작업을수행하지않기때문에당연히속도가빠르다. 하지만, Compaction 작업을수행하지않으면디스크조각모음을실행하기전의상태처럼 Memory 에빈공간이여기저기생긴다. 그렇기때문에크기가큰 Object 가들어갈수있는공간이없을수있다. 예를들어 Old Area 에남아있는크기가 300MB 인데도 10MB 짜리 Object 가연속적으로들어갈공간이없을수도있다. 그럴때 Concurrent mode failure 라는경고가발생하면서 Compaction 작업을수행한다. 그런데, CMS GC 를사용할때에는 Compaction 시간이다른 Parallel GC 보다더오래소요된다. 그래서오히려더문제가될수있다. 결론적으로운영중인시스템에가장적합한 GC 방식을찾아내야한다. ( 위문제로인해 CMS 에서다시 Parallel Collector 로다시회귀하는추세 ) 결론적으로, 운영중인시스템특성에따라적합한 GC 방식이다르므로해당시스템에가장적합한방식을찾아야한다. 자. JVM Memory 크기와 GC 의상관관계 Memory 크기가크면 GC 발생횟수는줄어들고 GC 수행시간은증가한다. Memory 크기가작으면 GC 수행시간은줄어들고 GC 발생횟수는증가한다. Memory 크기를크게설정할것인지, 작게설정할것인지에대한정답은없다. 서버자원이좋은시스템이라 Memory 를 10GB 로설정해도 Full GC 가 1 초이내에끝난다면 10 GB 로지정해도된다. 하지만, 대부분의서버는그렇지못하다. Memory 를 10GB 정도로설정하면 Full GC 시간이 10~30 초정도소요된다. 물론이시간은 Object 의크기가어떻게되어있느냐에따라서달라진다. 보통은 GC 튜닝이전에현재상황을모니터링한결과를바탕으로 Full GC 가발생한이후에남아있는 Memory 의크기를봐야한다. 만약 Full GC 후에남아있는 Memory 가 300MB 정도라면 300MB( 기본사용 ) + 500MB(Old Area 용최소 ) MB( 여유 Memory) 를감안하여 1GB 정도로지정하는것이좋다. 즉, Old Area 을위해서 500MB 이상여유가있는공간을지정해야한다. Memory 크기를지정할때지정해야하는것이한가지더있다. 바로 NewRatio 다. NewRatio 는 New Area 과 Old Area 의비율이다 기술백서 White Paper

35 XX:NewRatio=1 로지정하면 New Area:Old Area 이 1:1 이된다. 만약 1GB 라면 New Area:Old Area 은 500MB:500MB 가된다. NewRatio 가 2 이면 New Area:Old Area 이 1:2 가된다. 즉, 값이커지면커질수록 Old Area 의크기가커지고 New Area 의크기가작아진다. NewRatio 값은 GC 의전반적인성능에많은영향을준다. New Area 의크기가작으면 Old Area 으로넘어가는 Memory 의양이많아져서 Full GC 도잦아지고시간도오래걸린다. NewRatio 의값이 2 나 3 일때의전반적인 GC 상황이좋을수있다. 5. GC 성능테스트 가. Introduction GC 옵션별로성능테스트를진행하고자한다. 먼저테스트할환경정보는다음과같다. Test Machine 은 Linux 4Core 이고 WAS 는 WebLogic 11g 를사용했으며 Test Source 는아래와같다. Test Case 는총 4 개로 Serial Collector, Parallel Collector, CMS Collector, G1 Collector 를사용하여 GC 수행정보및 TPS 를비교하였다. 기본적으로 GC 정보를 Logging 하기위해 -verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps - XX:+PrintHeapAtGC -XX:+PrintGCDateStamps 등의옵션을사용했으며 HPJmeter 및 InterMax 를이용해테스트결과를분석및정리하였다. 그리고 WAS 에트랜잭션을발생시키기위해 JMeter Tool 을사용했음을밝힌다. 테스트에사용된 JSP <%@ page contenttype="text/html;charset=euc-kr"%> <%@ page import="java.util.*" %> <html> <head> </head> <body> <h3> <% ArrayList arr1 = new ArrayList(); for(int i=0; i< ; i=i+1) { Part 2 APM 313

36 arr1.add("saldfjlwjefklwjlefjwljflwjklfjlklefkewljwlksdgsdbgsdgbdf"); } Thread.sleep(1000); %> </h3> </body> </html> 나. Case 1 1) Java Options -client -Xms512m -Xmx512m -XX:PermSize=48m -XX:MaxPermSize=128m 2) 결과 GC 종류 GC 수행회수총 GC 수행시간평균 GC 수행시간 TPS Minor GC 1,187 77,000ms 65ms Full GC ,000ms 570ms 4,669 JMeter 에서 User 수를 30 으로설정하고 Ramp-up 없이동시에 10 분동안트랜잭션을날린결과 다. Case 2 1) Java Options -XX:+UseParallelGC (-server 옵션과동일 ) -Xms512m -Xmx512m -XX:PermSize=48m -XX:MaxPermSize=128m 기술백서 White Paper

37 2) 결과 GC 종류 GC 수행회수총 GC 수행시간평균 GC 수행시간 TPS Minor GC 1,300 46,000ms 35ms Full GC 5 1,000ms 200ms 5,809 JMeter 에서 User 수를 30 으로설정하고 Ramp-up 없이동시에 10 분동안트랜잭션을날린결과 Full GC 수행빈도가낮아좀더부하를주기위해아래와같이다시테스트를진행하였다. GC 종류 GC 수행회수총 GC 수행시간평균 GC 수행시간 TPS Minor GC 2, ,000ms 96ms Full GC ,000ms 397ms 4,099 JMeter 에서 User 수를 60 으로설정하고 Ramp-up 없이동시에 10 분동안트랜잭션을날린결과 라. Case 3 1) Java Options -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -Xms512m -Xmx512m -XX:PermSize=48m -XX:MaxPermSize=128m 2) 결과 Part 2 APM 315

38 GC 종류 GC 수행회수총 GC 수행시간평균 GC 수행시간 TPS Minor GC 2, ,000ms 64ms Full GC ,000ms 728ms 3084 JMeter 에서 User 수를 60 으로설정하고 Ramp-up 없이동시에 10 분동안트랜잭션을날린결과 마. Case 4 1) Java Options -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -Xms512m -Xmx512m -XX:PermSize=48m -XX:MaxPermSize=128m 2) 결과 GC 종류 GC 수행회수총 GC 수행시간평균 GC 수행시간 TPS Minor GC Full GC Heap 이 Generation 으로구성되지않으므로해당수치는미표기 2,779 JMeter 에서 User 수를 60 으로설정하고 Ramp-up 없이동시에 10 분동안트랜잭션을날린결과 바. 결론 Case 1 의경우 -client 옵션에의해 Serial GC Collector 가사용되었다. Serial GC Collector 는 GC 를 Single Thread 로진행하기때문에다른 GC Collector 에비해빠르게 GC 를수행하지못한다. 아래그래프를확인해보면부하테스트기간동안계속 Minor 및 Full GC 가계속수행된걸확인할수있다 기술백서 White Paper

39 [ 그림 19] InterMax 에서확인한 GC 추이 Case2 의경우 Parallel Collector 가선택됐으므로 Young Generation 에대한 Minor GC 는 Multi Thread 가 GC 를수행한다. 때문에 Serial GC Collector 와비교해보면 Minor GC 수행횟수가 1,187 에서 1,300 으로증가하였지만오히려평균 GC Time 은 65ms 에서 35ms 로약두배가량빨라진걸확인할수있다. 즉해당테스트 Machine 의 Core 수만큼 Multi Thread 가 Minor GC 작업을수행하여 Suspend Time 이감소한것이다. 더욱눈에띄는점은 Full GC 횟수가 128 에서 5 로감소한점이다. 이는 Young Generation 의 Object 가 Old Generation 으로 Promotion 되기전에 Minor GC 에의해대부분의 Object 가 GC 되었다는걸의미한다. 결과적으로감소한 Suspend Time 으로인해테스트기간동안좀더많은 Transaction 을처리할수있게되었고 TPS 도 4,669 에서 5,809 으로증가한걸확인할수있다. 이는곧 GC 로인한 WAS 의 Suspend 현상이 TPS 에도많은영향을준다는걸의미한다. 참고로?server 옵션을사용해도 Parallel Collector 가사용된다. 단 Server Class 는 2 개이상 CPU, 2G 이상물리적 Memory, 32bit Windows 를제외한시스템에서만옵션이적용되며그렇지않은경우해당옵션은무시된다. Server Class 가되면컴파일러는 Server Runtime Compiler 를사용한다. 다음으로 Case2 에서좀더부하를주기위해 JMeter User 수를 30 에서 60 으로증가시켜다시테스트를하였다. 당연한결과지만 Minor GC 및 Full GC 수행횟수가증가하였다. 그런데한가지주목할만한점은 Transaction 을수행하는 User 수를두배로설정했으면 TPS 도그에비례하여증가했어야하는데오히려감소했다는점이다. 해당 WAS 의 Thread Pool 을 500 으로잡아놨기때문에충분히처리가가능한 Transaction 양이라로보였지만결과는오히려반대였다. 이는곧해당 WAS 에수용가능한처리량이상의 Transaction 이발생한다면잦은 GC 로인한 Context Switching 및 Suspend 현상으로오히려 TPS 가떨어질수있다는걸의미한다. Part 2 APM 317

40 Case3 의경우 CMS Collector 가사용되었다. CMS Collector 는기본적으로 Old Area 에 Object 를할당할때 Free list 를사용해단편화를최소화하고 Scheduling 으로 Old Generation 의 Remark 단계가 Minor GC 중간지점에오도록조정하여 OOME 를방지한다. 그리고 Default 로 Old Area 의공간이 68% 이상사용되면 Full GC 가발생한다. 뿐만아니라통계정보를계속산출하기위해지수평균을내는작업도한다. 위의결과를보면 Parallel Collector 에비해오히려 TPS 가낮게나오는걸확인할수있는데이는아마도위와같이간단한테스트환경에서 CMS Collector 의복잡한메커니즘이오히려역작용을한것같다. 유념해야할사실은 CMS Collector 는비교적자원이여유있는상태에서 Size 가큰 Long Lived Object 가있는경우에가장적합하다는것이다. Case4 의경우를확인해보자. Garbage First Collector 를선택했을때이론처럼 Suspend Time 이거의없으며 TPS 도최대치가나올것으로기대했다. 그러나 TPS 가오히려감소한결과를보여준다. 의문이들어여러가지 Statistics 를확인해보았다. 그런데테스트기간동안 CPU 사용량이약 10% 정도꾸준히상승한것이확인되었다. [ 그림 20] Parallel Collector 의 CPU 사용률 [ 그림 21] G1 Collector 의 CPU 사용률 G1 Collector 의경우물리적 Generation 구분을없애고전체 Heap 을 1M bytes 단위 Region 으로재편하여관리를하는데기본적인 Architecture 상 Resource 사용량이다른 Collector 에비해높은것으로확인되었다. G1 Collector 는아직까지실제운영사이트에서사용하는경우를보지못했는데 JDK 7 이안정화되고 JDK 7 에최적화된 WAS 가나와서 G1 Collector 를안정적으로적용할수있는날이온다면 GC 튜닝을안해도되는날이올수있다고한다 기술백서 White Paper

41 부록 : Train 알고리즘 WAS 처럼짧은트랜잭션처리하는시스템은 GC 로인한 Suspend 현상매우안좋다. 이알고리즘은 Heap 을블록으로나눠 Single Block 단위로 Marking 단계, Copy 단계를한다. Incremental 알고리즘이라고도한다. GC 수행단위가 Single 블럭이므로 GC 중인 Memory 블록만 Suspend 발생한다.(Pause Time 줄인다.) Heap 을 Train 으로구성, Train 은 Car( 객차 ) 라는 fixed Size 의 Memory 블록을묶은체인을말한다. 각 Memory 블록은 Car 외부에서의참조를기억하는 Remember set 을가진다.(Car 외부에서참조하는 Object 의 Object 이름남긴다.) Part 2 APM 319

42 [ 그림 22] Train 알고리즘구성도 1 에서 Car 1-1 에 GC 발생직전 Mark 를통해 a, b 만 Reachable Object 라고판명되고 c 는 Garbage Object 로구별되었다. Object a 는 Root set R1 에의해직접 Reference 되므로 Remember set 에 R1 이기록된다. Copy, Compaction 을통해 Object 가이동하면주소도변경되며이를참조하는 Object 들도 Reference 변경되어야한다.(Train3 만들어서 ) Object 는자신이참조하는 Reference 는 기술백서 White Paper

43 가지지만, 누가나를참조하는지에대한정보는없다. 최악의경우모든 Root set, Object 의 Reference 모두찾아다녀야한다. Remember set 은작업을방지하며이를구성하기위해서는 write barrier 라는장치를사용한다. write barrier 는간단한코드로된 instruction 의 set, 즉작은이벤트프로그램또는 Trigger 정도라고할수있다. write barrier 는관계를맺을대상 Object 가같은 Car 에있지않으면 Car 에있는 Remember set 에기록한다. Car 1-1 의 Live Object A, B 는 Train 3 만들어서 Car 3-1 로구출된다. Train 1 의마지막 Object 들이 Garbage 상태로순환참조된다.( 음영이들어간네모칸 ) 즉 Car 1-3 을추가해이동이아닌새로운 Train 을만든다. 왜냐하면 A, B 가 Car 1-3 추가해서나갔다면 C 도 Car 1-3 으로이동해야한다. C 는외부참조이므로 Root set 과연결관계모르는상태에서 rescue 범위안에들어오기때문이다. 또 Object C 가 Garbage 인경우 Garbage 를그냥남겨놓아야하는일생긴다. C 는같은 Train 에서참조되고있고 A 는 Train 외부인 root set 에참조되므로 Car 1-3 을추가하는것대신새로운 Train 생성해서옮기는것이다. 정리하면같은 Train 에서참조되면뒤로 Train 을달고, Root set 에서참조되면아예 Train 을새로만든다. 만약 Object C 가 Live 라면 Car 1-1 이 Car 1-3 과동일하게이동해도 Copy 부담만있을뿐이다. 그림의 1 번에서 Object 이동으로비게된 Car 1-1 은 free Car 로변경된다. 그림의 2 에서는 Car 1-2 에 GC 수행하고 Mark 를통해 D, E, F 모두 Garbage 란걸알아낸다. Remember set 의정보로 C 에서 E 를참조하는것도알아내고, 순환참조하는 Object 모두 Garbage 란걸알아내게된다. 별도 Copy 작업없이 1-2, 1-3 모두 free Car 로변경되고 Train1 은 free Train 이된다. Train 알고리즘의장점은 Pause Time 을분산시켜장시간의 Suspend 피할수있다. 단개별 Suspend Time 을합산하면다른알고리즘보다더많아질수있다. Part 2 APM 321

Runtime Data Areas 엑셈컨설팅본부 /APM 팀임대호 Runtime Data Area 구조 Runtime Data Area 는 JVM 이프로그램을수행하기위해할당받는메모리영역이라고할수있다. 실제 WAS 성능문제에직면했을때, 대부분의문제점은 Runtime Da

Runtime Data Areas 엑셈컨설팅본부 /APM 팀임대호 Runtime Data Area 구조 Runtime Data Area 는 JVM 이프로그램을수행하기위해할당받는메모리영역이라고할수있다. 실제 WAS 성능문제에직면했을때, 대부분의문제점은 Runtime Da Runtime Data Areas 엑셈컨설팅본부 /APM 팀임대호 Runtime Data Area 구조 Runtime Data Area 는 JVM 이프로그램을수행하기위해할당받는메모리영역이라고할수있다. 실제 WAS 성능문제에직면했을때, 대부분의문제점은 Runtime Data Area 에서발생하는경우가많다. Memory Leak 이나 Garbage Collection

More information

untitled

untitled Memory leak Resource 力 金 3-tier 見 Out of Memory( 不 ) Memory leak( 漏 ) 狀 Application Server Crash 理 Server 狀 Crash 類 JVM 說 例 行說 說 Memory leak Resource Out of Memory Memory leak Out of Memory 不論 Java heap

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

튜닝및모니터링 HP JVM 튜닝옵션

튜닝및모니터링 HP JVM 튜닝옵션 HP JVM 튜닝옵션 2013. 11. 01 목차 1. 개요... 3 2. JVM 특징소개... 3 3. JVM 주요옵션소개... 3 4. 분석기술... 16 2 1. 개요 HP JVM 의특징을살펴보고, TroubleShooting 방법과, 실제 Site 튜닝사례를살펴보도록한다. 2. JVM 특징소개 JVM 메모리영역. 3. JVM 주요옵션소개 GC command-line

More information

1

1 1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

[Brochure] KOR_TunA

[Brochure] KOR_TunA LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /

More information

튜닝및모니터링 SUN JVM 튜닝옵션

튜닝및모니터링 SUN JVM 튜닝옵션 SUN JVM 튜닝옵션 2013. 11. 01 목차 1. 개요... 3 2. JVM 특징소개... 3 3. JVM 주요옵션소개... 4 4. 분석기술... 9 2 1. 개요 SUN JVM 의특징을살펴보고, Trouble Shooting 방법과, 실제 Site 튜닝사례를살펴보도록한다. 2. JVM 특징소개 JVM 메모리영역. GC 알고리즘 Minor GC New

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 4 (Object) (Class) (Instance) (Method) (Constructor) Memory 1 UML 1 @ & 1 (Real World) (Software World) @ &.. () () @ & 2 (Real World) (Software World) OOA/ Modeling Abstraction Instantiation

More information

JVM GC 와메모리 Tuning < 조병욱 > JVM GC 와메모리 Tuning 특별기고 1 1. GC란무엇인가? GC는 Garbage Collection의약자로 Java 언어의중요한특징중의하나이다. GC는 Java Application에서사용하지않는메모리를자동으로수

JVM GC 와메모리 Tuning < 조병욱 > JVM GC 와메모리 Tuning 특별기고 1 1. GC란무엇인가? GC는 Garbage Collection의약자로 Java 언어의중요한특징중의하나이다. GC는 Java Application에서사용하지않는메모리를자동으로수 < 조병욱 > 1. GC란무엇인가? GC는 Garbage Collection의약자로 Java 언어의중요한특징중의하나이다. GC는 Java Application에서사용하지않는메모리를자동으로수거하는기능을말한다. 예전의전통적인언어인 C에서는 malloc, free 등을이용해서메모리를할당하고, 일일이그메모리를수거해줘야했다. 그러나 Java 언어에서는 GC 기술을사용함에따라,

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

untitled

untitled Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

Tablespace On-Offline 테이블스페이스 온라인/오프라인

Tablespace On-Offline 테이블스페이스 온라인/오프라인 2018/11/10 12:06 1/2 Tablespace On-Offline 테이블스페이스온라인 / 오프라인 목차 Tablespace On-Offline 테이블스페이스온라인 / 오프라인... 1 일반테이블스페이스 (TABLESPACE)... 1 일반테이블스페이스생성하기... 1 테이블스페이스조회하기... 1 테이블스페이스에데이터파일 (DATA FILE) 추가

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

Chap7.PDF

Chap7.PDF Chapter 7 The SUN Intranet Data Warehouse: Architecture and Tools All rights reserved 1 Intranet Data Warehouse : Distributed Networking Computing Peer-to-peer Peer-to-peer:,. C/S Microsoft ActiveX DCOM(Distributed

More information

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx Basic Idea of External Sorting run 1 run 2 run 3 run 4 run 5 run 6 750 records 750 records 750 records 750 records 750 records 750 records run 1 run 2 run 3 1500 records 1500 records 1500 records run 1

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,

More information

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사) Java Program Performance Tuning ( ) n (Primes0) static List primes(int n) { List primes = new ArrayList(n); outer: for (int candidate = 2; n > 0; candidate++) { Iterator iter = primes.iterator(); while

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

Microsoft PowerPoint - 알고리즘_1주차_2차시.pptx

Microsoft PowerPoint - 알고리즘_1주차_2차시.pptx Chapter 2 Secondary Storage and System Software References: 1. M. J. Folk and B. Zoellick, File Structures, Addison-Wesley. 목차 Disks Storage as a Hierarchy Buffer Management Flash Memory 영남대학교데이터베이스연구실

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

04 Çмú_±â¼ú±â»ç

04 Çмú_±â¼ú±â»ç 42 s p x f p (x) f (x) VOL. 46 NO. 12 2013. 12 43 p j (x) r j n c f max f min v max, j j c j (x) j f (x) v j (x) f (x) v(x) f d (x) f (x) f (x) v(x) v(x) r f 44 r f X(x) Y (x) (x, y) (x, y) f (x, y) VOL.

More information

로거 자료실

로거 자료실 redirection 매뉴얼 ( 개발자용 ) V1.5 Copyright 2002-2014 BizSpring Inc. All Rights Reserved. 본문서에대한저작권은 비즈스프링 에있습니다. - 1 - 목차 01 HTTP 표준 redirect 사용... 3 1.1 HTTP 표준 redirect 예시... 3 1.2 redirect 현상이여러번일어날경우예시...

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

유니티 변수-함수.key

유니티 변수-함수.key C# 1 or 16 (Binary or Hex) 1:1 C# C# (Java, Python, Go ) (0101010 ). (Variable) : (Value) (Variable) : (Value) ( ) (Variable) : (Value) ( ) ; (Variable) : (Value) ( ) ; = ; (Variable) : (Value) (Variable)

More information

Class Loader 엑셈컨설팅본부 /APM 팀김다운 개요 클래스 loader 는자바의기능중하나로써런타임에클래스파일을찾고로딩하는임무를맡는다. WAS 마다 Class Loading 의방식에조금씩차이가있으며, Intermax 설치시에 classpath 옵션을 WAS 에추

Class Loader 엑셈컨설팅본부 /APM 팀김다운 개요 클래스 loader 는자바의기능중하나로써런타임에클래스파일을찾고로딩하는임무를맡는다. WAS 마다 Class Loading 의방식에조금씩차이가있으며, Intermax 설치시에 classpath 옵션을 WAS 에추 Class Loader 엑셈컨설팅본부 /APM 팀김다운 개요 클래스 loader 는자바의기능중하나로써런타임에클래스파일을찾고로딩하는임무를맡는다. WAS 마다 Class Loading 의방식에조금씩차이가있으며, Intermax 설치시에 classpath 옵션을 WAS 에추가함으로서 Class loading 을한다. 이에클래스 loader 의로딩메커니즘을이해하고

More information

Frama-C/JESSIS 사용법 소개

Frama-C/JESSIS 사용법 소개 Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

주제별로명령들이따로있는것을보면주제끼리의순서는상관없어도명령들의위치를지 켜야할지도모른다. 하지만실험은해보지않았으니심심하면체크해봐도된다. [CRAB] CRAB 을하기위한가장기본적인세팅이다. jobtype = cmssw scheduler = glite 등이있다. 보통 CRAB

주제별로명령들이따로있는것을보면주제끼리의순서는상관없어도명령들의위치를지 켜야할지도모른다. 하지만실험은해보지않았으니심심하면체크해봐도된다. [CRAB] CRAB 을하기위한가장기본적인세팅이다. jobtype = cmssw scheduler = glite 등이있다. 보통 CRAB CRAB job 1. CRAB이란? CRAB: CMS Remote Analysis Builder 원격으로 Tier-2에접속해서일을하는프로그램이다. 사용자의컴퓨터가아닌외부의 Tier-2에서일이돌아가므로사용자의 terminal이꺼진다해도일이끊기지않는다. 2. 전제조건 private key 가있어야한다. VO member 여야한다. 3. sitedb CMS에서해당

More information

Microsoft Word - [2017SMA][T8]OOPT_Stage_2040 ver2.docx

Microsoft Word - [2017SMA][T8]OOPT_Stage_2040 ver2.docx OOPT Stage 2040 - Design Feesual CPT Tool Project Team T8 Date 2017-05-24 T8 Team Information 201211347 박성근 201211376 임제현 201411270 김태홍 2017 Team 8 1 Table of Contents 1. Activity 2041. Design Real Use

More information

Oracle Database 10g: Self-Managing Database DB TSC

Oracle Database 10g: Self-Managing Database DB TSC Oracle Database 10g: Self-Managing Database DB TSC Agenda Overview System Resource Application & SQL Storage Space Backup & Recovery ½ Cost ? 6% 12 % 6% 6% 55% : IOUG 2001 DBA Survey ? 6% & 12 % 6% 6%

More information

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역 WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역시쉽게해결할수있다. 이번화이트페이퍼에서는 Window Function 중순위 RANK, ROW_NUMBER,

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

Microsoft PowerPoint - 발표_090513_IBM세미나_IPTV_디디오넷_완료.ppt

Microsoft PowerPoint - 발표_090513_IBM세미나_IPTV_디디오넷_완료.ppt 신후랑 팀장, 디디오넷 (010-8752-4952, hrshin@dideonet.com) 05/20/2009 BIZ in a box - Solution for Enterprise IPTV 2 UNIX vs. x86 Non-x86 UNIX 2008 2007 0% Y/Y Total x86 2008 2007-25.3% Y/Y 0 200 400 600 800 3 Why

More information

슬라이드 1

슬라이드 1 Software Verification #3 정적분석도구, 단위 / 시스템테스트도구 Software Verification Team 4 강 정 모 송 상 연 신 승 화 1 Software Verification #3 정적분석도구, 단위 / 시스템테스트도구 CONTENTS 01 Overall Structure 02 Static analyzer SonarQube

More information

J2EE & Web Services iSeminar

J2EE & Web Services iSeminar 9iAS :, 2002 8 21 OC4J Oracle J2EE (ECperf) JDeveloper : OLTP : Oracle : SMS (Short Message Service) Collaboration Suite Platform Email Developer Suite Portal Java BI XML Forms Reports Collaboration Suite

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for 2003 Development of the Software Generation Method using Model Driven Software Engineering Tool,,,,, Hoon-Seon Chang, Jae-Cheon Jung, Jae-Hack Kim Hee-Hwan Han, Do-Yeon Kim, Young-Woo Chang Wang Sik, Moon

More information

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University Outline Network Network 구조 Source-to-Destination 간 packet 전달과정 Packet Capturing Packet Capture 의원리 Data Link Layer 의동작 Wired LAN Environment

More information

Microsoft PowerPoint - 6.pptx

Microsoft PowerPoint - 6.pptx DB 암호화업데이트 2011. 3. 15 KIM SUNGJIN ( 주 ) 비에이솔루션즈 1 IBM iseries 암호화구현방안 목차 목 차 정부시책및방향 제정안특이사항 기술적보호조치기준고시 암호화구현방안 암호화적용구조 DB 암호화 Performance Test 결과 암호화적용구조제안 [ 하이브리드방식 ] 2 IBM iseries 암호화구현방안 정부시책및방향

More information

<3235B0AD20BCF6BFADC0C720B1D8C7D120C2FC20B0C5C1FE20322E687770>

<3235B0AD20BCF6BFADC0C720B1D8C7D120C2FC20B0C5C1FE20322E687770> 25 강. 수열의극한참거짓 2 두수열 { }, {b n } 의극한에대한 < 보기 > 의설명중옳은것을모두고르면? Ⅰ. < b n 이고 lim = 이면 lim b n =이다. Ⅱ. 두수열 { }, {b n } 이수렴할때 < b n 이면 lim < lim b n 이다. Ⅲ. lim b n =0이면 lim =0또는 lim b n =0이다. Ⅰ 2Ⅱ 3Ⅲ 4Ⅰ,Ⅱ 5Ⅰ,Ⅲ

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Crash Unity SDK... Log & Crash Search. - Unity3D v4.0 ios

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

항목

항목 Cloud 컴퓨팅기반분산파일시스템개요 개발실 UPDATE : 2012. 11 18 INDEX 1. 가용성 2. 확장성 3. PrismFS 4. Q&A 2 가용성 3 Gmail 장애 2011년 2월 27일 34000명의 Gmail 사용자들이일어나보니메일, 주소록, 채팅기록등이사라진것을발견 2011년 2월 28일 스토리지소프트웨어업데이트를진행하는중 Bug로인해발생했다고공지

More information

STARFIELD BRAND IDENTITY DESIGN GUIDELINES 2

STARFIELD BRAND IDENTITY DESIGN GUIDELINES 2 STARFIELD BRAND IDENTITY DESIGN GUIDELINES 1 STARFIELD BRAND IDENTITY DESIGN GUIDELINES STARFIELD BRAND IDENTITY DESIGN GUIDELINES 2 STARFIELD BRAND IDENTITY DESIGN GUIDELINES 3 STARFIELD BRAND IDENTITY

More information

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUERY 을실행하게된다면 BLOCK I/O 가많이발생하게된다. 이런이유로 QUERY 의성능은좋지못할것이다.

More information

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

Microsoft PowerPoint - Introduction to Google Guava.pptx

Microsoft PowerPoint - Introduction to Google Guava.pptx 2012 년자바카페 OPEN 세미나 주제 : Introduction to Google Guava 2012. 6. 16 김흥래 hrkim3468@gmail.com Java Developer s Forum JavaCafe community 구아바???? Java Developer s Forum JavaCafe Community 소개 Google Core Library

More information

OPCTalk for Hitachi Ethernet 1 2. Path. DCOMwindow NT/2000 network server. Winsock update win95. . . 3 Excel CSV. Update Background Thread Client Command Queue Size Client Dynamic Scan Block Block

More information

Chapter ...

Chapter ... Chapter 4 프로세서 (4.9절, 4.12절, 4.13절) Contents 4.1 소개 4.2 논리 설계 기초 4.3 데이터패스 설계 4.4 단순한 구현 방법 4.5 파이프라이닝 개요*** 4.6 파이프라이닝 데이터패스 및 제어*** 4.7 데이터 해저드: 포워딩 vs. 스톨링*** 4.8 제어 해저드*** 4.9 예외 처리*** 4.10 명령어 수준

More information

Microsoft PowerPoint - polling.pptx

Microsoft PowerPoint - polling.pptx 지현석 (binish@home.cnu.ac.kr) http://binish.or.kr Index 이슈화된키보드해킹 최근키보드해킹이슈의배경지식 Interrupt VS polling What is polling? Polling pseudo code Polling 을이용한키로거분석 방어기법연구 이슈화된키보드해킹 키보드해킹은연일상한가! 주식, 펀드투자의시기?! 최근키보드해킹이슈의배경지식

More information

1217 WebTrafMon II

1217 WebTrafMon II (1/28) (2/28) (10 Mbps ) Video, Audio. (3/28) 10 ~ 15 ( : telnet, ftp ),, (4/28) UDP/TCP (5/28) centralized environment packet header information analysis network traffic data, capture presentation network

More information

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation 1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation Board(EVB B/D) 들과 TCP/IP Protocol로연결되며, 연결된 TCP/IP

More information

목차 1. 개요 현상 문제분석 문제해결

목차 1. 개요 현상 문제분석 문제해결 이슈및장애 OutOfMemory 장애조치방법 2013. 11. 01 목차 1. 개요... 3 2. 현상... 3 3. 문제분석... 5 4. 문제해결... 13 2 1. 개요 OutOfMemory Exception 정의 Garbage Collector 가새로운 Object 를유지하기위해충분한메모리공간을확보하지못할때발생함. Vendor 사의 JVM 메모리모델방식을참조하여야함.

More information

Microsoft PowerPoint - 30.ppt [호환 모드]

Microsoft PowerPoint - 30.ppt [호환 모드] 이중포트메모리의실제적인고장을고려한 Programmable Memory BIST 2010. 06. 29. 연세대학교전기전자공학과박영규, 박재석, 한태우, 강성호 hipyk@soc.yonsei.ac.kr Contents Introduction Proposed Programmable Memory BIST(PMBIST) Algorithm Instruction PMBIST

More information

RVC Robot Vaccum Cleaner

RVC Robot Vaccum Cleaner RVC Robot Vacuum 200810048 정재근 200811445 이성현 200811414 김연준 200812423 김준식 Statement of purpose Robot Vacuum (RVC) - An RVC automatically cleans and mops household surface. - It goes straight forward while

More information

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공 메신저의새로운혁신 채팅로봇 챗봇 (Chatbot) 입문하기 소 이 메 속 : 시엠아이코리아 름 : 임채문 일 : soulgx@naver.com 1 목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper

More information

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx CrackMe 15.exe (in Simples) 문제풀이 동명대학교정보보호동아리 THINK www.mainthink.net 강동현 Blog: johnghb.tistory.com e-mail: cari2052@gmail.com 1 목차 : 1. 문제설명및기본분석 --------------------------- P. 03 2 상세분석 ---------------------------

More information

Jerry Held

Jerry Held DB / TSC Oracle Database 10g (Self-Managing Database) (Common Infrastructure) (Automatic Workload Repository) (Server-generated Alerts) (Automated Maintenance Tasks) (Advisory Framework) (ADDM) (Self-Managing

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 : HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 : ios 3.0 이상 - 콘텐츠형식 : MP4 (H264,AAC ), MP3 * 디바이스별해상도,

More information

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터 Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터를사용자에게전송하게되며 Parsing 단계에서실행계획이생성된다. Bind 변수를사용하는 SQL

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Reasons for Poor Performance Programs 60% Design 20% System 2.5% Database 17.5% Source: ORACLE Performance Tuning 1 SMS TOOL DBA Monitoring TOOL Administration TOOL Performance Insight Backup SQL TUNING

More information

The Self-Managing Database : Automatic Health Monitoring and Alerting

The Self-Managing Database : Automatic Health Monitoring and Alerting The Self-Managing Database : Automatic Health Monitoring and Alerting Agenda Oracle 10g Enterpirse Manager Oracle 10g 3 rd Party PL/SQL API Summary (Self-Managing Database) ? 6% 6% 12% 55% 6% Source: IOUG

More information

Windows Server 2012

Windows Server  2012 Windows Server 2012 Shared Nothing Live Migration Shared Nothing Live Migration 은 SMB Live Migration 방식과다른점은 VM 데이터파일의위치입니다. Shared Nothing Live Migration 방식은 Hyper-V 호스트의로컬디스크에 VM 데이터파일이위치합니다. 반면에, SMB

More information

Deok9_Exploit Technique

Deok9_Exploit Technique Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따 Commit Wait Class 대기시간감소방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 Wait Class 중 Commit 카테고리에해당하는 Wait Event 에의한대기현상으로 DB 시스템의성능저하현상이발생하는것은종종경험할수있다. 그중대표적인 Wait Event 는 Log File Sync 이다. 실제로대부분의 DB 시스템의 Top 5 Wait Event

More information

1

1 04단원 컴퓨터 소프트웨어 1. 프로그래밍 언어 2. 시스템 소프트웨어 1/10 1. 프로그래밍 언어 1) 프로그래밍 언어 구분 각종 프로그래밍 언어에 대해 알아보는 시간을 갖도록 하겠습니다. 우리가 흔히 접하는 소프트웨어 들은 프로그래밍 언어로 만들어지는데, 프로그래밍 언어는 크게 2가지로 나눌 수 있습니다. 1 저급어 : 0과 1로 구성되어 있어, 컴퓨터가

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State

More information

공개 SW 기술지원센터

공개 SW 기술지원센터 - 1 - 일자 VERSION 변경내역작성자 2007. 11. 20 0.1 초기작성손명선 - 2 - 1. 문서개요 4 가. 문서의목적 4 나. 본문서의사용방법 4 2. 테스트완료사항 5 가. 성능테스트결과 5 나. Tomcat + 단일노드 MySQL 성능테스트상세결과 5 다. Tomcat + MySQL Cluster 성능테스트상세결과 10 3. 테스트환경 15

More information

교육2 ? 그림

교육2 ? 그림 Interstage 5 Apworks EJB Application Internet Revision History Edition Date Author Reviewed by Remarks 1 2002/10/11 2 2003/05/19 3 2003/06/18 EJB 4 2003/09/25 Apworks5.1 [ Stateless Session Bean ] ApworksJava,

More information

Cloud Friendly System Architecture

Cloud Friendly System Architecture -Service Clients Administrator 1. -Service 구성도 : ( 좌측참고 ) LB(LoadBlancer) 2. -Service 개요 ucloud Virtual Router F/W Monitoring 개념 특징 적용가능분야 Server, WAS, DB 로구성되어 web service 를클라우드환경에서제공하기위한 service architecture

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Real Time JVM & JBoss http://cafe.naver.com/opensourcesw 다우기술오픈소스기술팀 목차 1. Real Time 이란 2. RT 자바애플리케이션문제 3. Real-time Specification for Java(RTSJ) 4. Azul Zing 5. Azul Zing POC 사례 Real Time 1. Why Real-Time

More information