معماری
برخلاف Java VM ، که ماشین های توده ای هستند، Dalvik VM دارای یک معماری براساس ثبت است. ابزاری به اسم dx برای تبدیل بعضی از فایل های Java .class به .dex استفاده می شود. کلاس های چندگانه در یک فایل .dex ذخیره می شوند. بایت کد های جاوا نیز به یک دستورکار جایگزینی که توسط dalvik استفاده می شود، تبدیل می شوند. یک فایل غیر فشرده .dex معمولا چند درصد از یک فایل فشرده جاوا کم حجم تر است.
فایل های قابل اجرای dalvik ممکن است دوباره بعد از نصب روی گوشی اصلاح شوند. برای دستیابی به بهینه سازی بهتر، ممکن است ترتیب بایت ها در بعضی دیتاها جابه جا شود، ساختار داده ها و کتابخانه های توابع به صورت خطی در ارتباط قرار بگیرند.
همان طور که می دانید در اندروید 2.2، dalvik یک کامپایلر لحظه ای دارد.
علاوه بر بهینه بودن برای احتیاج به رم کم، dalvik تعدادی مشخصه های ویژه ای دارد که آن را از سایر ماشین های مجازی دیگر متفاوت می کند:
VM محدود شده است که از فضای کمتری استفاده کند.
constant pool اصلاح شده است تا تنها از شاخص های 32-bit برای ساده سازی ترجمه استفاده کند.
ماشین مجازی استاندارد جاوا تنها دستورات توده ای 8-bit را اجرا می کند. متغییرهای محلی باید با دستورات مجزا انتقال یابند. در عوض dalvik دستورکار 16-bit مخصوص خود را دارد که مستقیما روی متغییرهای محلی کار می کند.