안드로이드 런타임(아트)및 달빅

안드로이드 런타임(아트)은 안드로이드의 응용 프로그램 및 일부 시스템 서비스에서 사용하는 관리되는 런타임입니다. 예술과 그 전임자 달빅은 원래 창조되었습니다.특히 안드로이드 프로젝트를 위해. 런타임으로 예술은 달비 실행 가능한 형식 및 덱스 바이트 코드 사양을 실행합니다.

예술과 달빅은 덱스 바이트 코드를 실행하는 호환 런타임이므로 예술과 함께 실행할 때 달빅을 위해 개발 된 응용 프로그램이 작동해야합니다. 그러나 일부달빅 작업 기술은 예술에 작동하지 않습니다. 가장 중요한 문제에 대한 자세한 내용은 안드로이드 런타임(아트)에서 앱 동작 검증을 참조하십시오.

예술의 특징

다음은 예술에 의해 구현 된 주요 기능 중 일부입니다.

사전 편집

사전 편집을 도입하여 성능을 향상시킬 수 있습니다. 예술은 또한 달빅보다 엄격한 설치 시간 검증이 있습니다.

설치시,아트는 온-디바이스 엑스 2 코트 도구를 사용하여 응용 프로그램을 컴파일합니다. 이 유틸리티는 덱스 파일을 입력으로 허용하고 대상 장치에 대해 컴파일 된 앱 실행 파일을 생성합니다. 유틸리티는 다음을 수행 할 수 있어야합니다.모든 유효한 덱스 파일을 어려움없이 컴파일하십시오. 그러나 일부 사후 처리 도구는 달빅에 의해 허용 될 수 있지만 예술에 의해 제거 될 수없는 잘못된 파일을 생성합니다. 자세한 내용은 수집 문제 해결를 참조하십시오.가비지 콜렉션 개선

가비지 콜렉션은 리소스 집약적이어서 앱 성능이 저하되어 디스플레이가 고르지 않거나 사용자 인터페이스의 응답성이 저하되거나 기타 문제가 발생할 수 있습니다. 예술은 복장을 향상시킵니다.여러 가지 방법으로 수집:1965>

  • 가비지 수집 인체 공학을 개선하여 동시 가비지 수집이 더 시기 적절하게 이루어지도록 하고,이는 가비지 수집이 더 시의적절하게 이루어지도록 한다.일반적인 사용 사례에서GC_FOR_ALLOC이벤트를 매우 드물게 만듭니다
  • 개발 및 디버깅 개선

    예술은 다음을 제공합니다 앱 개발 및 디버깅을 향상시키는 기능.

    샘플링 프로파일러 지원

    역사적으로 개발자는 응용 프로그램 실행을 추적하기 위해 설계된 추적 뷰 도구를 프로파일러로 사용했습니다. 추적 보기 유용한 정보를 제공 하는 동안 달 빅에 대 한 결과 메서드별 호출 오버 헤드에 의해 왜곡 되었습니다.

    아트에서는 이러한 제한 사항이 없는 전용 샘플링 프로파일러에 대한 지원을 추가합니다. 이는 상당한 속도 저하 없이 앱 실행에 대한 보다 정확한 보기를 제공합니다. 샘플 지원이 킷캣 릴리스에서 포달빅의 추적 뷰에 추가되었습니다.

    더 많은 디버깅 기능 지원

    아트에서는 특히 모니터 및 쓰레기 컬렉션 관련 기능에서 여러 가지 새로운 디버깅 옵션을 지원합니다. 예를 들어 다음을 수행할 수 있습니다:

    • 스택 추적에서 어떤 잠금이 유지되는지 확인한 다음 잠금을 보유하는 스레드로 이동합니다.
    • 주어진 클래스에 얼마나 많은 라이브 인스턴스가 있는지 물어보고,인스턴스를 확인하도록 요청하고,어떤 참조가 객체를 라이브로 유지하고 있는지 확인하십시오.
    • 특정 인스턴스의 이벤트(예:중단점)를 필터링합니다.
    • 메서드가 종료될 때 반환되는 값을 참조하십시오(“메서드-종료”이벤트 사용).
    • 특정 필드에 액세스 및/또는 수정할 때 프로그램 실행을 일시 중지하도록 필드 감시 지점을 설정합니다.

    예외 및 충돌 보고서의 향상된 진단 세부 정보

    아트에서는 런타임 예외가 발생할 때 가능한 한 많은 컨텍스트와 세부 정보를 제공합니다. 아트는java.lang.ClassCastException,java.lang.ClassNotFoundExceptionjava.lang.NullPointerException에 대한 확장된 예외 세부 정보를 제공합니다.(이후 버전의 달빅은java.lang.ArrayIndexOutOfBoundsExceptionjava.lang.ArrayStoreException에 대한 확장된 예외 세부 사항을 제공했는데,여기에는 이제 배열의 크기와 범위를 벗어난 오프셋이 포함됩니다.)

    예를 들어,java.lang.NullPointerException는 이제 앱이 쓰려고 하는 필드 또는 호출하려고 하는 메서드와 같이 앱이 널 포인터로 수행하려는 작업에 대한 정보를 표시합니다. 다음은 몇 가지 일반적인 예입니다:

    java.lang.NullPointerException: Attempt to write to field 'intandroid.accessibilityservice.AccessibilityServiceInfo.flags' on a null objectreference
    java.lang.NullPointerException: Attempt to invoke virtual method'java.lang.String java.lang.Object.toString()' on a null object reference

    예술은 또한 자바와 네이티브 스택 정보를 모두 포함하여,응용 프로그램 네이티브 충돌 보고서에서 향상된 컨텍스트 정보를 제공합니다.

    문제 보고

    답글 남기기

    이메일 주소는 공개되지 않습니다.

    Previous post 조정
    Next post 베이스 밴드