안드로이드용 JVM인 Dalvik VM에는 여러가지 실행 옵션이 있습니다. dalvikvm -help 명령으로 가능한 옵션들을 볼 수 있습니다.

$ adb shell
# dalvikvm -help
dalvikvm -help

dalvikvm: [options] class [argument ...]
dalvikvm: [options] -jar file.jar [argument ...]

The following standard options are recognized:
  -classpath classpath
  -Dproperty=value
  -verbose:tag  ('gc', 'jni', or 'class')
  -ea[:<package name>... |:<class name>]
  -da[:<package name>... |:<class name>]
   (-enableassertions, -disableassertions)
  -esa
  -dsa
   (-enablesystemassertions, -disablesystemassertions)
  -showversion
  -help

The following extended options are recognized:
  -Xrunjdwp:<options>
  -Xbootclasspath:bootclasspath
  -Xcheck:tag  (e.g. 'jni')
  -XmsN  (min heap, must be multiple of 1K, >= 1MB)
  -XmxN  (max heap, must be multiple of 1K, >= 2MB)
  -XssN  (stack size, >= 1KB, <= 256KB)
  -Xverify:{none,remote,all}
  -Xrs
  -Xint  (extended to accept ':portable' and ':fast')

These are unique to Dalvik:
  -Xzygote
  -Xdexopt:{none,verified,all}
  -Xnoquithandler
  -Xjnigreflimit:N  (must be multiple of 100, >= 200)
  -Xjniopts:{warnonly,forcecopy}
  -Xdeadlockpredict:{off,warn,err,abort}
  -Xstacktracefile:<filename>
  -Xgc:[no]precise
  -Xgenregmap
  -Xcheckdexsum

Configured with: debugger profiler hprof show_exception=1

Dalvik VM init failed (check log file)

안드로이드 환경에서 우리는 dalvikvm 명령어를 실행하여 직접 애플리케이션 프로세스를 띄우지는 않습니다. 때문에 달빅 VM에 직접적으로 옵션을 전달할 수가 없습니다. 
그대신 안드로이드는 시스템 프로퍼티(system properties)를 설정하여 달빅 VM 실행옵션을 바꾸는 방법을 제공합니다. 간단하게는 setprop 명령어로 실행옵션을 바꿀 수 있습니다.
adb shell setprop dalvik.vm.[옵션명] [옵션값]

위와 같은 형식으로 달빅VM 관련 프로퍼티를 설정한 후, zygote 프로세스를 재시작하면(adb shell stop;adb shell start) 새로 런치되는 앱 프로세스에 변경사항이 적용됩니다.

VM 옵션에 대응하는 dalvik.vm.* 형식의 프로퍼티명이 정확히 무엇인지는 framework/base/core/jin/AndroidRuntime.cpp 소스를 참조하면 알 수 있습니다. 일단 제가 찾아낸 프로퍼티명과 프로퍼티값 샘플은 다음과 같습니다.

# -Xmx
dalvik.vm.heapsize

# -Xstacktracefile (기본값 /data/anr/traces.txt)
dalvik.vm.stack-trace-file 

# -Xcheck:jni (값은 true or false)
dalvik.vm.checkjni 

# -Xjniopts
dalvik.vm.jniopts

# -ea (값은 all, ?, ...)
dalvik.vm.enableassertions

# v=a,o=v와 같은 형식으로 값 설정
# v=a는 -Xverify:all, v=n은 -Xverify:none, v=r은 -Xverify:remote에 해당
# o=a는 -Xdexopt:all, o=v는 -Xdexopt:verified, o=n은 -Xdexopt:none에 해당
# m=y는 -Xgenregmap -Xgc:precise에 해당
dalvik.vm.dexopt-flags

# -Xint (값은 int:portable or int:fast or int:jit)
dalvik.vm.execution-mode 

# -Xdeadlockpredict
dalvik.vm.deadlock-predict

# -Xcheckdexsum (값은 true or false)
dalvik.vm.check-dex-sum 

# -Xthreshold
dalvik.vm.jit.threshold

# -Xjitop
dalvik.vm.jit.op

# -Xincludeselectedop
dalvik.vm.jit.includeop

# -Xjitmethod
dalvik.vm.jit.method 

# -Xincludeselectedmethod
dalvik.vm.jit.includemethod 

# -Xjitprofile
dalvik.vm.jit.profile  

* 자세한 내용은 다음 문서를 참조하시기 바랍니다.
Posted by 에코지오
,