diff options
Diffstat (limited to 'src/devices/tech/dalvik/index.jd')
-rw-r--r-- | src/devices/tech/dalvik/index.jd | 152 |
1 files changed, 139 insertions, 13 deletions
diff --git a/src/devices/tech/dalvik/index.jd b/src/devices/tech/dalvik/index.jd index 71324d8a..ed1bad11 100644 --- a/src/devices/tech/dalvik/index.jd +++ b/src/devices/tech/dalvik/index.jd @@ -1,8 +1,8 @@ -page.title=Dalvik Technical Information +page.title=ART and Dalvik @jd:body <!-- - Copyright 2013 The Android Open Source Project + Copyright 2014 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,14 +16,140 @@ page.title=Dalvik Technical Information See the License for the specific language governing permissions and limitations under the License. --> -<p>Dalvik is the managed runtime used by applications and some system -services on Android. Dalvik was originally created specifically for -the Android project.</p> -<p>Much of the documentation in this directory is intended to help -with the ongoing development of Dalvik, as opposed to most of the -other documentation on this site, which is geared more towards -application development.</p> - -<p>Please note, in Android 4.4 a new virtual machine - ART - is being introduced -experimentally that will eventually replace Dalvik. Please see <a -href="{@docRoot}devices/tech/dalvik/art.html">Introducing ART</a> for details. + + +<div id="qv-wrapper"> +<div id="qv"> + <h2 id="Contents">In this document</h2> + <ol id="auto-toc"> + </ol> +</div> +</div> + +<p>Android runtime (ART) is the managed runtime used by applications and some system +services on Android. ART and its predecessor Dalvik were originally created +specifically for the Android project. ART as the runtime executes the Dalvik +Executable format and Dex bytecode specification.</p> + +<p>ART and Dalvik are compatible runtimes running Dex bytecode, so apps +developed for Dalvik should work when running with ART. However, some +techniques that work on Dalvik do not work on ART. For information about the +most important issues, see <a +href="http://developer.android.com/guide/practices/verifying-apps-art.html">Verifying +App Behavior on the Android Runtime (ART)</a>.</p> + +<h2 id="features">ART Features</h2> + +<p>Here are some of the major features implemented by ART.</p> + +<h3 id="AOT_compilation">Ahead-of-time (AOT) compilation</h3> + +<p>ART introduces ahead-of-time (AOT) compilation, which can improve app +performance. ART also has tighter install-time verification than Dalvik.</p> + +<p>At install time, ART compiles apps using the on-device +<strong>dex2oat</strong> tool. This utility accepts <a +href="http://source.android.com/devices/tech/dalvik/dex-format.html">DEX</a> files as input and +generates a compiled app executable for the target device. The utility should be +able to compile all valid DEX files without difficulty. However, some +post-processing tools produce invalid files that may be tolerated by Dalvik but +cannot be compiled by ART. For more information, see <a +href="http://developer.android.com/guide/practices/verifying-apps-art.html#GC_Migration">Addressing +Garbage Collection Issues</a>.</p> + +<h3 id="Improved_GC">Improved garbage collection</h3> + +<p>Garbage collection (GC) can impair an app's performance, resulting in choppy +display, poor UI responsiveness, and other problems. ART improves garbage +collection in several ways:</p> + +<ul> + <li>One GC pause instead of two</li> + <li>Parallelized processing during the remaining GC pause</li> + <li>Collector with lower total GC time for the special case of cleaning up + recently-allocated, short-lived objects</li> + <li>Improved garbage collection ergonomics, making concurrent garbage + collections more timely, which makes <a + href="http://developer.android.com/tools/debugging/debugging-memory.html#LogMessages"><code>GC_FOR_ALLOC</code></a> + events extremely rare in typical use cases</li> + <li>Compacting GC to reduce background memory usage and fragmentation</li> +</ul> + +<h3 id="Debugging_Imp">Development and debugging improvements</h3> + +<p>ART offers a number of features to improve app development and debugging.</p> + +<h4 id="Sampling_Profiler">Support for sampling profiler</h4> + +<p>Historically, developers have used the <a +href=" http://developer.android.com/tools/help/traceview.html">Traceview</a> +tool (designed for tracing +application execution) as a profiler. While Traceview gives useful information, +its results on Dalvik have been skewed by the per-method-call overhead, and use +of the tool noticeably affects run time performance.</p> + +<p>ART adds support for a dedicated sampling profiler that does not have these +limitations. This gives a more accurate view of app execution without +significant slowdown. Sampling support was added to Traceview for +Dalvik in the KitKat release.</p> + +<h4 id="Debugging_Features">Support for more debugging features</h4> + +<p>ART supports a number of new debugging options, particularly in monitor- and +garbage collection-related functionality. For example, you can:</p> + +<ul> + <li>See what locks are held in stack traces, then jump to the thread that + holds a lock.</li> + <li>Ask how many live instances there are of a given class, ask to see the + instances, and see what references are keeping an object live.</li> + <li>Filter events (like breakpoint) for a specific instance.</li> + <li>See the value returned by a method when it exits (using “method-exit” + events).</li> + <li>Set field watchpoint to suspend the execution of a program when a specific + field is accessed and/or modified.</li> +</ul> + +<h4 id="Crash_Reports">Improved diagnostic detail in exceptions and crash reports</h4> + +<p>ART gives you as much context and detail as possible when runtime exceptions +occur. ART provides expanded exception detail for <code><a +href="http://developer.android.com/reference/java/lang/ClassCastException.html">java.lang.ClassCastException</a></code>, +<code><a +href="http://developer.android.com/reference/java/lang/ClassNotFoundException.html">java.lang.ClassNotFoundException</a></code>, +and <code><a +href="http://developer.android.com/reference/java/lang/NullPointerException.html">java.lang.NullPointerException</a></code>. +(Later versions of Dalvik provided expanded exception detail for <code><a +href="http://developer.android.com/reference/java/lang/ArrayIndexOutOfBoundsException.html">java.lang.ArrayIndexOutOfBoundsException</a></code> +and <code><a +href="http://developer.android.com/reference/java/lang/ArrayStoreException.html">java.lang.ArrayStoreException</a></code>, +which now include the size of the array and the out-of-bounds offset, and ART +does this as well.)</p> + +<p>For example, <code><a +href="http://developer.android.com/reference/java/lang/NullPointerException.html">java.lang.NullPointerException</a></code> +now shows information about what the app was trying to do with the null pointer, +such as the field the app was trying to write to, or the method it was trying to +call. Here are some typical examples:</p> + +<pre class="no-pretty-print"> +java.lang.NullPointerException: Attempt to write to field 'int +android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object +reference</pre> + +<pre class="no-pretty-print"> +java.lang.NullPointerException: Attempt to invoke virtual method +'java.lang.String java.lang.Object.toString()' on a null object reference</pre> + +<p>ART also provides improved context information in app native crash reports, +by including both Java and native stack information. </p> + +<h2 id="Reporting_Problems">Reporting Problems</h2> + +<p>If you run into any issues that aren’t due to app JNI issues, please report +them via the Android Open Source Project Issue Tracker at <a +href="http://b.android.com">http://b.android.com</a>. +Please include an <code>"adb bugreport"</code> and link to the app in Google +Play store if available. Otherwise, if possible, attach an APK that reproduces +the issue. Please note that issues (including attachments) are publicly +visible.</p> |