最近我正在做一个关于 JVM 和字节码的实验。
我使用这些代码片段进行测试。
import java.util.*;
public class Simple {
    private String a = "abcdefghijklmnopaqrstuvwaxyazaaabcdefghijklmnopaqrstuvwaxyazaabcdefghijklmnopaqrstuvwaxyazaabcdefghijklmnopaqrstuvwaxyaz";
    public int test()
    {
        String bb = "abcdefghijklmnopaqrstuvwaxyazaaabcdefghijklmnopaqrstuvwaxyazaabcdefghijklmnopaqrstuvwaxyazaabcdefghijklmnopaqrstuvwaxyaz";
        int a = 0;
        int b = a;
        int c = a + b;
        return c;
    }
    public static void main(String[] args) 
    {
        String cc = "abcdefghijklmnopaqrstuvwaxyazaaabcdefghijklmnopaqrstuvwaxyazaabcdefghijklmnopaqrstuvwaxyazaabcdefghijklmnopaqrstuvwaxyaz";
        Simple simple = new Simple();
        simple.test();
        Scanner input=new Scanner(System.in);
        System.out.println("how much money do you need?");
        double  number=input.nextDouble();
    }
} 
首先,我使用 HotSpot 进行实验。在 Windows 上,我关闭
-Djava.compiler=NONE
并使用 HeapMemView 查看 HotSpot 的堆内存。我可以找到“6162 6364..”的序列(与我的私有字符串变体匹配)并找到我的代码片段的字节码序列。
但是我找不到Java标准库的字节码序列..就像
Java.Lang.Obeject
Java.Lang.Math
怎么了..?以我的理解,我认为我应该在 JVM 的堆中找到它们的字节码序列。
然后我用JRocket再做一次..使用
   -Djava.compiler=NONE
关闭编译器模式......但这次我什至无法在堆上找到我的字符串变体......
我被困在这里两天了..有人可以帮我吗...?我真的很感激...
谢谢!