任何人都可以告诉这个字节码的作用吗?

时间:2016-09-23 06:02:54

标签: java android bytecode

            // Byte code:
            //   0: aload_0
            //   1: monitorenter
            //   2: aload_0
            //   3: getfield 17 me/empirical/android/application/fillmemory/MainActivity$4$1:this$1 Lme/empirical/android/application/fillmemory/MainActivity$4;
            //   6: getfield 28 me/empirical/android/application/fillmemory/MainActivity$4:this$0   Lme/empirical/android/application/fillmemory/MainActivity;
            //   9: bipush 10
            //   11: aload_0
            //   12: getfield 17    me/empirical/android/application/fillmemory/MainActivity$4$1:this$1 Lme/empirical/android/application/fillmemory/MainActivity$4;
            //   15: getfield 28    me/empirical/android/application/fillmemory/MainActivity$4:this$0   Lme/empirical/android/application/fillmemory/MainActivity;
            //   18: invokestatic 34    me/empirical/android/application/fillmemory/MainActivity:access$300 (Lme/empirical/android/application/fillmemory/MainActivity;)Landroid/widget/Button;
            //   21: invokestatic 38    me/empirical/android/application/fillmemory/MainActivity:access$100 (Lme/empirical/android/application/fillmemory/MainActivity;ILandroid/widget/Button;)V
            //   24: aload_0
            //   25: monitorexit
            //   26: return
            //   27: astore_1
            //   28: aload_0
            //   29: monitorexit
            //   30: aload_1
            //   31: athrow
            //   32: astore_1
            //   33: goto -9 -> 24
            // Local variable table:
            //   start  length  slot    name    signature
            //   0  36  0   this    1
            //   27 4   1   localObject Object
            //   32 1   1   localException  Exception
            // Exception table:
            //   from   to  target  type
            //   2  24  27  finally
            //   24 26  27  finally
            //   28 30  27  finally
            //   2  24  32  java/lang/Exception

此代码是用于填充ram内存的android应用程序的一部分。此代码存在于函数中以填充10 mb的ram内存。任何人都可以解释它的工作,因为我没有字节码的经验,请建议几个网站,以掌握快速的字节码知识。谢谢。

2 个答案:

答案 0 :(得分:2)

bytecode JVM(Java虚拟机)的指令集。 Java程序员实际上不必理解bytecode。 JVM使用bytecode使javaprogram可移植,这意味着它可以在任何平台上运行(Windows,MAC,UNIX,LINUX .........)。

平台上的JRE解释字节码并将其转换为平台的本地ObjectCode。

你可以参考This Link 了解更多详情

答案 1 :(得分:1)

从名称MainActivity$4$1判断,此代码必须来自MainActivity嵌套匿名类中的方法。

Java代码应该是这样的:

synchronized (this) {
    try {
        methodInMainActivity(MainActivity.this, 10, methodThatReturnsButton(MainActivity.this));
    } catch (Exception localException) {}
}

您可以在Internet上找到许多Java字节码教程。但是,最终的参考是:The Java Virtual Machine Instruction Set