본문 바로가기
[Effective Java] 파이날라이저 ( finalizer ) 의 사용을 피하자. [Effective Java] 파이날라이저 ( finalizer ) 의 사용을 피하자. - 파이널라이저는 예측 불가에다가 위험하기도 하며 일반적으로 불필요하다. - 파이널라이저의 큰 단점은 신속하게 실행된다는 보장이 없다는 것. 즉 파이널라이저에서 time critical 하게 중요한 일을 해서는 안 된다는 것. - 파이널라이저가 얼마나 빨리 실행되는가는 가비지 컬렉션 알고리즘에 달려있으며, 이는 JVM 종류에 따라 다양하다. - 자바 언어 명세에는 파이널라이저가 신속하게 실행된다는 보장이 없는 것은 물론, 반드시 실행될것인지도 보장하고 있지 않다. - System.gc() 와 System.runFinalization() 메소드들을 사용하지 말자. 그 메소드들은 파이널라이저가 실행될 가능성을 높여주긴 하.. 2015. 12. 15.
[android] ART 의 GC 이야기. [android] ART 의 GC 이야기. http://commonsware.com/blog/2014/06/16/art-garbage-collection.html ART 의 GC 는 아직은 아니지만, Compacting garbage collector 를 추구한다. 기존의 JVM 은 memory 의 fragmentation 이 되 있을 때 마지막 연속된 여유로운 공간에 대해 새로운 memory 할당을 시도하고, 그것이 실패하면 OutOfMemoryError 를 뿜어낸다. 하지만 Compacting garbage collector 에서는 이 fragmentation 을 해결하여 GC 하기 때문에fragmented 된 부분을 포함하여 정말 메모리가 부족할 때 OutOfMemoryError 를 뿜는다. 다시말.. 2015. 12. 2.
[android] ART ( android runtime ) 이란? (2017.08. updated) [android] ART ( android runtime ) 이란? - 2017. 8 내용 보강 ART, Android Runtime from Kitkat( 4.4 ) 기존의 안드로이드에서는 DEX file 을 Dalvik machine(JVM) 위에 올리는 방식이었는데,Kitkat ( 4.4 ) 부터는 ART(Android Runtime) machine 위에서 OAT file 을 돌리는 것이 가능해졌다.기존의 dex 파일을 dex2oat 라는 converter 를 이용해서 converting 하여 생성하고 run 한다. Dalvik 은 bytecode 를 interpret 한다.그러면서 사용자가 앱을 실행할 때마다 성능 개선이 있을 수 있는 부분에 대해 네이티브 코드로 변환을 한다.이를 JIT( jus.. 2014. 1. 22.
[android] thread 들의 정체에 대해 알아보자. 안드로이드, thread 들의 정체에 대해 알아보자. 출처 : 휴휴님 블로그. MainHeapWorkerSignal CatcherJDWPBinder Thread # HeapWorker 는 Dalvik 상에서 GC 를 수행하는 스레드. GC가 HeapWorker 를 깨워서 자바 Object 의 finalizeAPI 를 호출해준다고 한다. HeapWorker 가 작업수행하는데 너무 오랜 시간이 걸리면 앱을 종료시키기도 한다고 한다. 그래서 finalize 를 피하는 게 좋다. ( finalize 는 왠만하면 쓰지 말라고 권고된다 ) Singal Catcher 는 시그널이 발생했을 때 무슨 일을 하는 녀석. 예를 들어 Dump 파일 생성, GC 수행 등의 작업을 수행하는 것으로 알려져 있다. JDWP 는 디버.. 2013. 12. 6.
[Spring] Spring Framework 의 개요 #3 Spring Framework 의 개요 #3 Spring의 IoC Spring Bean ( 그냥 Bean 이라고도 부름 )Spring Container 가 생성과 관계설정, 사용 등을 제어하는 IoC가 적용된 object. Bean Factory 확장한 Application Context별도의 정보를 참고하여 Bean의 생성, 관계 설정 등의 제어작업을 총괄코드에 상세내용이 들어가는 것이 아니라 설정정보를 가진 별개의 파일(xml)을가져와 활용하는 범용 IoC 엔진 Annotation Config Application Context @ConfigurationFactory class 에 붙는 annotation @BeanObject 만들어 return 하는 method. 예제코드ApplicationCont.. 2013. 6. 27.
JIT 컴파일러(Compiler)에 대해 알아본다. JIT 컴파일러(Compiler)에 대해 알아본다. JIT 컴파일러의 JIT는 Just-In-Time 의 약자로, 말 그대로 하면, "그 순간" 컴파일러라는 뜻인데, 사용할 때 컴파일한다는 의미이다. 무슨 말인지 모를 것이다. 당연하다. 하지만 아래의 글을 읽어보면, 아아.. 그런 말이구나 할 것이다. 이 JIT Compiler는 자바에서 대표적으로 사용하고 있다.( 요즘은 Platform Independent 가 대세이기 때문에 .NET 도, 브라우저도 사용한다. ) Java에서 Compile 을 하면 Bytecode 로 변환된다.( 이는 수도없이 들어봤을 것이다. 하지만 제대로 이해하지 못했을 것이다.. ?? )이 바이트코드는 기계가 바로 읽을 수 있는 형태가 아니며, 이 바이트코드는 실제 실행될 때.. 2013. 6. 27.
반응형