본문 바로가기
[Objective-C] NSObject 클래스와 런타임 시스템 [Objective-C] NSObject 클래스와 런타임 시스템 출처 : OS X 구조를 이해하면서 배우는 Objective-C Chap 8. Notice : 정리자(돼지왕 왕돼지)가 remind 하고 싶은 내용이나 모르는 내용 기반으로 정리하는 것이기 때문에 구체적인 내용은 책을 사서 보시기를 권장드립니다. 8.1. NSObject 클래스 * 8.1.1. 루트 클래스의 역할 -런타임 시스템은 Objective-C 용 운영체제 같은 것으로, 객체 생성, 해제에 따른 메모리 영역 관리와 송신된 메시지에 대응하는 메서드 검색 등을 한다. -보통은 프로그램에서 런타임 시스템 기능을 직접 사용하지 않는다.이런 기본 기능은 루트 클래스인 NSObject 에 있는 메서드로 제공된다.다시 말해 루트 클래스는 런타임 .. 2017. 12. 29.
[Java Concurrency] 중단 및 종료 #2 [Java Concurrency] 중단 및 종료 #2 7.3. 비정상적인 스레드 종료 상황 처리 - 스레드를 예상치 못하게 종료시키는 가장 큰 원인은 바로 RuntimeException 이다. RuntimeException 은 대부분 프로그램이 잘못 짜여져서 발생하거나 기타 회복 불가능의 문제점을 나타내는 경우가 많기 때문에 try_catch 구문으로 잡지 못하는 경우가 많다. RuntimeException 은 호출 스택을 따라 상위로 전달되기보다는 현재 실행되는 시점에서 콘솔에 스택 호출 추적 내용을 출력하고 해당 스레드를 종료시키도록 되어 있다. - 스레드 풀에서 사용하는 작업용 스레드나 스윙의 이벤트 처리 스레드와 같은 작업 처리용 스레드는 항상 Runnable 등의 인터페이스를 통해 남이 정의하고.. 2017. 4. 26.
[Effective Java] Chap 3. 모든 객체에 공통적인 메소드. [Effective Java] Chap 3. 모든 객체에 공통적인 메소드. - Object 는 실체 클래스( concrete class ) 지만 원래 상속을 목적으로 설계되었다. equals, hashCode, toString, clone, finalize 는 다른 모든 자바 클래스에서 전체적으로 준수해야 하는 보편적 계약을 내포하고 있다. Object 의 모든 서브 클래스에서 그메소드들을 오버라이드 하도록 설계되었기 때문이다. - 어떤 클래스에서 보편적 계약 준수에 실패하면 그 계약에 준하는 HashMap 이나 HashSet, ArrayList 등과 같은 다른 클래스들과 함께 사용할 때 올바르게 동작하지 않는다. [Effective Java] equals 메소드를 오버라이드 할 때는 hashCode 메.. 2015. 12. 23.
[android] Bitmap 과 메모리에 대한 이야기. 끝판왕 android, Bitmap 과 메모리에 대한 이야기, 끝판왕! 안드로이드 메모리에 대한 이야기. 한 앱은 Dalvik Heap 과 External 두가지 영역이 존재한다.Dalvik Heap 은 Java 에서 사용하는 메모리라고 보면 되고,External 은 native 메모리라고 보면 된다. Dalvik Heap 영역은 메모리가 꽉 차면 늘긴 하지만 그 공간이 줄지는 않는다.반대로 External 영역은 유동적으로 그 공간이 늘었다 줄었다 한다.( 특히 Ginger Bread 에서는 Java Object 관리를 잘못하면 심심하면 OOM 을 만날 수 있겠다. ) HoneyComb 이전에는 bitmap 은 native memory 에서 관리했으나,HoneyComb 이후에는 bitmap 도 dalvik h.. 2014. 1. 26.
[android] thread 들의 정체에 대해 알아보자. 안드로이드, thread 들의 정체에 대해 알아보자. 출처 : 휴휴님 블로그. MainHeapWorkerSignal CatcherJDWPBinder Thread # HeapWorker 는 Dalvik 상에서 GC 를 수행하는 스레드. GC가 HeapWorker 를 깨워서 자바 Object 의 finalizeAPI 를 호출해준다고 한다. HeapWorker 가 작업수행하는데 너무 오랜 시간이 걸리면 앱을 종료시키기도 한다고 한다. 그래서 finalize 를 피하는 게 좋다. ( finalize 는 왠만하면 쓰지 말라고 권고된다 ) Singal Catcher 는 시그널이 발생했을 때 무슨 일을 하는 녀석. 예를 들어 Dump 파일 생성, GC 수행 등의 작업을 수행하는 것으로 알려져 있다. JDWP 는 디버.. 2013. 12. 6.
반응형