1

Java で奇妙なバグに遭遇した可能性があります。次のコードを実行すると、「EXCEPTION_ACCESS_VIOLATION」例外が発生します。

私が最初に書いたコードのサブセットであるため、コードが (ロジックの観点から) 意味をなさないことはわかっています。いくつかの行を削除すると、バグは消えます。

このバグの原因を特定できる人はいますか?

public static void main(String[] args) {
    for (int i=0; i < 4000; i++) {
        System.out.println("item " + i);
        test1();
    }

    //runBatch();   
    System.out.println("Done! bye bye..");
}

public static int test1() {
    int     count;
    int     allMiddleCount;
    int[]   b = new int[0];

    allMiddleCount  = 0;
    for (int i = 1; i < 64; i++)
    {
        // evaluating the size of the subset
        count = 0;
        for (int j = 0; j < 6; j++)
            count++;

        allMiddleCount++;
    }

    for (int i=0; i < allMiddleCount; i++) {

    }

    return 0;
}
4

5 に答える 5

4

このバグの原因を特定できる人はいますか?

プロセスが通常の Java 例外ではなく停止している場合、それは基本的に JVM のバグです。使用しているプラ​​ットフォームや使用しているバージョンについては言及していませんが、新しいバージョンに更新してみてください。

于 2012-06-19T13:32:41.677 に答える
3

グーグルで検索するEXCEPTION_ACCESS_VIOLATIONと、そのJVMにはまだ調査中のバグがあるというOracleサイトにたどり着きました

于 2012-06-19T13:37:00.463 に答える
0

わかりました、Java にバグがあることを確認できました。彼らから新しいバグを確認するメールを受け取りました。

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7178093 (サイトは 2 日後に更新されます..)

于 2012-06-20T10:02:16.133 に答える
0

あなたのコードをテストしました。正常に動作します。

私の推測では、これはハードウェアまたはソフトウェア プラットフォームの問題が原因です。

于 2012-06-19T13:35:13.390 に答える