自首个Android版本以来,Dalvik VM一直是默认的VM.
谷歌在KitKat 4.4中发布了新的ART运行时.
AndroidPolice表示,这将提高应用程序性能和电池寿命.不幸的是,几乎没有关于ART的技术信息.只有这个页面.
根据我的理解,Dalvik VM在运行时将dex字节码转换为机器指令.ART将dex代码预编译为本机指令,从而消除了运行时转换步骤.
关于这个:
我一直听说Android应用程序应该尝试限制创建的对象数量,以减少垃圾收集器的工作量.有意义的是,您可能不希望创建大量的对象来跟踪有限的内存占用,例如在传统的服务器应用程序上,在几秒钟内创建100,000个对象并不是闻所未闻.
问题是我应该走多远?我已经看到大量的Android应用程序依赖于静态状态的例子,据说可以"加快速度".是否需要将垃圾收集的实例数量从几十个增加到几十个真的会产生很大的差异?我可以想象改变我的编码风格,现在创建了数十万个对象,就像你可能在一个完整的Java-EE服务器上,但依赖一堆静态状态(据说)减少垃圾收集的对象数似乎奇.
为了创建性能Android应用程序,改变编码风格真的需要多少钱?
当然,.dex文件适用于Android的Dalvik VM,.class文件适用于JVM.但我想知道他们是否有类似的布局(常量池,字段,方法,属性......)?字节码是不同的,但Dalvik特定的操作码是否与JVM中的操作码等效?
我是Android的新手,试图启动正在构建和部署的项目.但每次我尝试从eclipse启动应用程序时,我都会收到此错误:
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lcom/.../model/AvailabilityRequest$DAY_TIME_PREFERENCE;
[2012-02-06 17:32:11 - main-app] Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
[2012-02-06 17:32:11 - main-app] Dx at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
[2012-02-06 17:32:11 - main-app] Dx at com.android.dx.command.dexer.Main.processClass(Main.java:486)
...
[2012-02-06 17:32:11 - main-app] Dx at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
[2012-02-06 17:32:11 - main-app] Dx 1 error; aborting
[2012-02-06 17:32:11 - main-app] Conversion to Dalvik format failed with error 1
Run Code Online (Sandbox Code Playgroud)
我为这个愚蠢的事情杀了很多时间.显然,这是已知的问题,但对我来说没有任何作用.
是)我有的:
操作系统 - OS X,我认为这很重要;
IDE - eclipse 3.7.1
ADT - 版本:15.0.1.v201111031820-219398
构建工具 - Maven
到目前为止我尝试过:
- 属性 - > Java构建路径 …
这是我的情况,我有一个自定义编程语言,可以编译成Java字节代码.我有jar,我希望在Android应用程序中使用一些类.我需要一些关于如何处理这个问题的建议.我可以从jar中导入其中的一些类,但我不知道如何在Android上编译/运行它.任何建议表示赞赏谢谢
Google在Android 4.4中添加了一个新的ART运行时.如何将我的apk定位到ART运行时和Dalvik运行时?
每个ANR转储都列出了ANR时所有线程的状态.我知道什么WAIT意思但是做什么SUSPENDED和MONITOR意味着什么?
提前致谢...
首先,我想我可能会把这个问题标题很差,但是我想不出正确的话,所以请随意提出一个编辑,然后我会做出来,这样这个问题就更有教育意义并且与其他人相关.
我知道javax.Swing根本不能用于Android项目,我已经接受了这个并学习了基于Android XML的UI设计,但出于好奇,我想确切地知道原因.
我意识到手机的屏幕尺寸可能是Swing不能很好地处理的东西,但是什么是阻止开发人员简单地导入javax.Swing包(除了Android Studio之外根本不让它发生)变形和丑陋的摇摆窗口可能在Android设备屏幕上?我也意识到AWT和SWT也必须被导入,但同样的问题也适用于这些包.
我认为我对此缺乏了解可能真的源于缺乏对Java虚拟机和Android等价物的理解(Dalvik仍在使用,还是他们将冷火鸡切换到ART?).
与往常一样,非常感谢您提供的任何信息或阅读主题.我真的想要了解更多关于JVM,Dalvik和ART如何工作的基础知识.
instanceof关键字是否会对Android平台产生相对较重的影响(更具体地说是运行Dalvik VM的手机?
今天我正在阅读一些关于Andoird基础知识的幻灯片,这句话出现了:
Dalvik VM基于寄存器而不是基于堆栈.
那么,基于寄存器的VM与基于堆栈的VM之间的主要区别是什么?
第二个链接回答了我的问题:
另一个链接:
http://androidjayavelu.blogspot.co.at/2011/06/dalvik-virtual-machine-vs-java-virtual.html
android ×10
dalvik ×10
java ×5
eclipse ×2
jvm ×2
art-runtime ×1
instanceof ×1
macos ×1
maven ×1
ngen ×1
performance ×1
swing ×1