你会如何改进Dalvik? Android的虚拟机

我目前正在Android平台上撰写论文。 经过一番研究,很明显Dalvik有改进的空间。 我想知道,您认为开发人员在这个目标下的最佳用途是什么?

JIT编译似乎是最大的一个,但是我也听说这样的资源很少使用这个机器。 有没有人有资源或数据支持这一点?

还有其他的选择应该考虑吗? 除了开发强大的本地开发工具包以绕过虚拟机。

对于那些有兴趣的人来说,已经有关于Dalvik虚拟机的讲座已经被记录和上线了。

任何想法欢迎,因为这个问题似乎是主观的,我会澄清,我接受的答案必须有一些理由提出的变化。 任何支持数据的数据,例如Sun JVM引入时的改进,都将是一个巨大的优势。


  • 更好的垃​​圾收集:最小程度地压缩(以消除今天遇到的内存碎片问题),理想情况下在收集本身时减少CPU密集度(以减少“我的游戏帧率吸引”投诉)
  • JIT,你引用
  • 足够的文档,如果与NDK结合使用,足够疯狂的人可以将Dalvik字节码编译为用于AOT编译选项的本机代码
  • 让它与Android本身分离开来,这样其他项目可能会对它进行试验,并且社区贡献可能会以更大的数量和更快的剪辑到达
  • 如果你需要他们,我相信我可以提出其他想法。


  • JIT。 关于它没有帮助的东西是一堆垃圾。 您可能会更关注哪些代码是您的JIT,但本机代码性能的1/10总是会受到限制

  • 体面的GC。 现代世代垃圾收集器没有大口吃。

  • 更好的代码分析。 有很多情况下,不需要分配/释放,锁定等等。 它允许您编写干净的代码,而不是进行机器更好的优化

  • 理论上大部分高级语言(Java,Javascript,python,...)在大多数情况下应该在本机代码性能的20%以内。 但它要求平台供应商花费100多年+开发人员年。 Sun Java越来越好。 他们也一直在努力工作了10年。


    Dalvik的主要问题之一是性能,这听起来很糟糕,但我最想做的事情之一是增加更多的语言。

    JVM已经让社区项目在该平台上运行Python和Ruby,甚至为其开发了特殊语言,如Scala,Groovy和Closure。 在Dalvik平台上看到这些(和/或其他)也是很好的。 Sun也一直致力于达芬奇机器,这是JVM的一种动态打字扩展,表明它已经从过去15年来Sun遵循的“一种语言适合所有人”的哲学的重大转变。

    链接地址: http://www.djcxy.com/p/91187.html

    上一篇: How would you improve Dalvik? Android's Virtual Machine

    下一篇: Writing python code on android