Dan*_*ler 4 java arrays static-analysis bytecode findbugs
我想通过查看字节码来了解正在分配的数组的大小,如果在编译时知道该信息,当然.
背景:我想编写一个FindBugs检测器(查看编译的字节码)并报告某些阵列分配的发生.为了滤除误报,我对"小"数组不感兴趣,只对编程时大小不可用或大于可配置阈值的数组感兴趣.
由于FindBugs的源代码没有太多记录,我正在寻找一些关于如何开始的指针 - 也许已经有一个检测器做了类似我能看到的东西.
好吧,如果基于常量分配它们,您可以检查在分配之前推送的常量.例如:
class ArraySize {
    private static final int smallsize = 10;
    private static final int largesize = 1000;
    public static void main(String[] args) {
        int[] small = new int[smallsize];
        int[] big = new int[largesize];
    }
}
给出字节码:
Compiled from "ArraySize.java"
class ArraySize extends java.lang.Object{
ArraySize();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
   4:   return
public static void main(java.lang.String[]);
  Code:
   0:   bipush  10
   2:   newarray int
   4:   astore_1
   5:   sipush  1000
   8:   newarray int
   10:  astore_2
   11:  return
}
| 归档时间: | 
 | 
| 查看次数: | 973 次 | 
| 最近记录: |