标签: dalvik

DalvikVM与Android中的JavaVM相比?

总的来说,Android在Dalvik Vm中将每个应用程序作为一个单独的进程运行.我是从Doc那里得到的.但我无法理解去Dalvik VM for Android的主要原因是什么.它比Java VM有什么优势.分享您的知识.它有助于.

提前致谢.

android jvm dalvik

3
推荐指数
1
解决办法
3691
查看次数

我可以在dalvik上运行C代码吗?

我可以在Android 上的dalvik VM上运行C代码吗?

VM运行字节代码,但我需要在dalvik-VM上为myApps运行c代码.可能吗??

android dalvik android-ndk

3
推荐指数
1
解决办法
1050
查看次数

Jellybean上缺少扩展宽度的dalvik字节码

当ICS问世时,引入了几个新的扩展宽度字节码.其中大部分是用于支持巨型ID的说明.以下是一些新的说明,取自我的ics/dalvik/opcode-gen/bytecode.txt:

#
# Extended-width opcodes
#

op 00ff const-class/jumbo           41c  y type-ref      continue|throw
op 01ff check-cast/jumbo            41c  n type-ref      continue|throw
op 02ff instance-of/jumbo           52c  y type-ref      continue|throw
op 03ff new-instance/jumbo          41c  y type-ref      continue|throw
op 04ff new-array/jumbo             52c  y type-ref      continue|throw
op 05ff filled-new-array/jumbo      5rc  n type-ref      continue|throw
op 06ff iget/jumbo                  52c  y field-ref     continue|throw
...
Run Code Online (Sandbox Code Playgroud)

但是,在JB代码中,我找不到对这些新字节码的任何引用.在我的jellybean版本的bytecodes.txt中,最后一个操作码以0xfe结尾:

op   fc +iput-object-volatile       22c  n field-ref     optimized|continue|throw
op   fd +sget-object-volatile       21c  y field-ref     optimized|continue|throw
op   fe +sput-object-volatile       21c  n field-ref     optimized|continue|throw

# unused: …
Run Code Online (Sandbox Code Playgroud)

android bytecode dalvik android-ndk android-source

3
推荐指数
1
解决办法
682
查看次数

为什么字节码在直接访问字段时调用 Object->getClass()

我反编译了 Java(实际上是 Dalvik)字节码。在方法的开头,我直接访问实例成员的字段(即不通过 getter)。

似乎 Java 调用Object.getClass()了访问的实例成员 ( mOther),但没有在任何地方使用结果。这是某种检查吗?为什么需要这个电话?我怀疑这是因为我直接访问了一个字段(在该类中定义),但我没有看到连接。

Java代码和反编译后的字节码如下。

(请注意,最后一条指令lifeTime作为常量加载,0x0001因为 in MyOtherClass,我有lifeTime一个public final字段,并且当前是从代码初始化的。)

MyOtherClass other = mOther;
if (mAge >= other.lifeTime) { // lifeTime is initialized to 0x0001
   end();
   return;
}

.line 53
move-object/from16 v0, p0
iget-object v0, v0, Lcom/example/engine/MyClass1;->mOther:Lcom/example/engine/MyOtherClass;
move-object/from16 v16, v0

.line 54
.local v16, other:Lcom/example/engine/MyOtherClass;
move-object/from16 v0, p0

iget v0, v0, Lcom/example/engine/MyClass1;->mAge:I
move/from16 v18, v0

// Why is Object->getClass() called?
invoke-virtual/range {v16 .. v16}, …
Run Code Online (Sandbox Code Playgroud)

java android bytecode dalvik

3
推荐指数
1
解决办法
498
查看次数

Dalvik Virtual Machine采用的尺寸

我试图了解为Android中的每个进程分配了多少内存.据我了解,每个应用程序进程都有一个独立的Zygote进程实例,Zygote将分叉Dalvik VM.

我写了一个小样本java应用程序,它只是在循环中打印"hello world".后来通过ADB shell调用了Dalvik VM.现在,Procrank命令显示,

PID Vss Rss Pss Uss cmdline 9374 7556K 7556K 3600K 3384K dalvikvm

这里显示的USS是3384k.

后来,我用一个活动和TextView编写了一个小的android程序.现在procrank显示

PID Vss Rss Pss Uss cmdline 6540 37256K 35124K 4387K 3392K com.example.helloworld

我的问题是:

  1. 如果每个应用程序进程包含Dalvik VM,是否会占用更多内存?
  2. 我们怎么知道VM占用的内存大小和Java进程占用的大小?

我对Dalvik的理解可能是错误的,以及如何调用它以及VM在每个进程中占用的内存.

任何见解都是受欢迎的.

谢谢.

android virtual-machine dalvik android-framework

3
推荐指数
1
解决办法
1097
查看次数

/ dev / ashmem / dalvik-jit-code-cache的本机崩溃

我的Android游戏GeoGuess(https://play.google.com/store/apps/details?id=uk.co.quinny898.game.geoguess)的设备崩溃导致设备崩溃

全部都是Java,所以我不明白为什么会发生这种崩溃。该崩溃发生在34个唯一的设备上(并且还在不断增加),并且确实给用户带来了问题(它似乎正在启动中)

堆栈跟踪如下:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'samsung/serranoltexx/serranolte:4.4.2/KOT49H/I9195XXUCNH5:user/release-keys'
Revision: '5'
pid: 23657, tid: 23704, name: AsyncTask #1 >>> uk.co.quinny898.game.geoguess <<<
signal 16 (SIGSTKFLT), code -6 (SI_TKILL), fault addr --------
r0 42049ee8 r1 00000000 r2 663c69c3 r3 00000000
r4 622a880e r5 64489e8c r6 6447ca98 r7 000020f4
r8 417bbf80 r9 622a8806 sl 00000000 fp 42b5f278
ip 65c49fec sp 64861c40 lr 00000000 pc 663c69d8 cpsr 600d0030
d0 …
Run Code Online (Sandbox Code Playgroud)

android dalvik

3
推荐指数
1
解决办法
3127
查看次数

本机代码可以导致Android中Java代码中的内存损坏吗?

在Android中,当我们通过JNI调用本机代码时,它是否会破坏Dalvik VM以及在其中运行的Java代码?

例如,假设我们有这个C方法,我们通过JNI调用它:

JNIEXPORT void JNICALL Java_MemoryCorruptor_corruptMemory()
{
    while (1) {
        char *p = randomAddress();
        *p = randomChar();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果VM只加载.so文件并且本机代码在 VM 相同的上下文/地址空间中运行,那么我认为VM可能已损坏.

另一方面,如果VM创建一个子进程来保存.so文件并使用某种形式的IPC来调用方法,那么Java代码就不会被本机代码破坏.

android dalvik memory-corruption android-ndk

3
推荐指数
1
解决办法
744
查看次数

Xamarin运行时与Dalvik

我正在为三大移动生态系统寻找原生开发的替代品,并受到Xamarin Studio的打击.

简单的问题,Xamarin运行时"在Android中传递(替代)"Dalvik VM吗?另一个简单的问题是,Xamarin是否只为ARM处理器生成二进制代码?和英特尔凌动手机一样,不行吗?

android dalvik xamarin.android xamarin

3
推荐指数
1
解决办法
564
查看次数

为什么我们需要将*.odex文件放在/ system/app下,即使我们已经有/ data/dalvik-cache了?

例如,我们有phone.apkphone.odex/system/app.根据一些非官方文档,phone.odex用于加快加载应用程序的过程.但是,为什么我们不只是把phone.odex/data/dalvik

更奇怪的是:存在一个名为system@app@phone@classes.dexunder 的文件/data/dalvik,当应用程序加载时,哪一个优先加载,/system/app/phone.odex或者/data/dalvik/system@app@phone@classes.dex

它是完全多余的投入phone.odex/system/app

optimization android virtual-machine loader dalvik

3
推荐指数
1
解决办法
4993
查看次数

加载修改后的/system/framework/*.j​​ar,无需重启

我正在向/ system/framework中的services.jar注入一些类.不幸的是,我总是重启设备,以便在我的应用程序中查看对services.jar的修改.有没有办法强制dalvikvm重新加载所有框架罐?

android dalvik dex

3
推荐指数
1
解决办法
2961
查看次数