【问题标题】:How does DVM manage the memory when the compiled code get loaded in DVM?当编译的代码加载到 DVM 中时,DVM 如何管理内存?
【发布时间】:2013-02-03 13:39:30
【问题描述】:

在JVM中加载Java字节码时,JVM将内存分为以下几部分

1.

2.堆栈

3.代码

4.静态

如何在 DVM 中发生同样的情况?请指导我理解这一点。

【问题讨论】:

    标签: java android memory-management jvm dalvik


    【解决方案1】:

    据我所知,DVM 管理内存的方式与 JVM 相同。显然,细节上会有一些差异,但如果你理解了一个,你应该能够理解另一个。

    但是,您的理解有点错误……关于 JVM。对于 HotSpot JVM(至少),代码和静态(类帧)都在堆内分配。我知道使用了 permgen 堆但那是堆空间,在某些情况下该空间将被垃圾收集。

    【讨论】:

    • 是的...我接受...GC 的工作方式与 JVM GC 的工作方式相同。我的困惑就在这里,一旦方法执行,堆栈帧就会被破坏,但我读到 DVM 使用基于寄存器的操作码......
    • 帮助我,我很想知道 DVM 的基础知识,因为我知道它会在设计应用程序时帮助我
    • @TechKida - 这不会有任何区别。 JVM 的“opstack”不是堆栈。它只是描述中间表达式结果处理方式的一种方式。实际栈是存放局部变量和方法参数的地方,还有方法返回信息。
    • @TechKida - 我不明白为什么这会对您设计应用程序的方式产生任何影响。从应用程序的角度来看,JVM 和 DVM “工作方式相同”。 (对您而言重要的区别在于更高级别的 API。)
    • 非常感谢..它帮助我消除了误解,在应用程序级别的工作中我认为与其担心,我必须专注于如何使用可用的 API...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多