记忆/班级区域&多线程

时间:2014-02-10 10:46:37

标签: java multithreading

  1. 内存的哪一部分是静态变量和类名 存储在哪里?是在类/方法区域还是其他区域?

  2. 内存的哪个部分加载了不同方法的指令?

  3. 每个线程是否都有自己的堆栈区域,或者它们是否有单独的堆栈以及单独的类/方法区域?

  4. Thread类的“run方法”实际上有什么指示?

  5. 代码示例:

    class A {
        static int a=5;  //where is this static a stored to?
    
        public void a() {
            System.out.prinln("hello"); //where is this instruction loaded to?
        }
    
        public static void b() {
            System.out.prinln("hi"); //where is this instruction loaded to? 
        }
    }
    

    静态方法和非静态方法是否有不同的内存区域?

2 个答案:

答案 0 :(得分:1)

关于#3:每个线程都有自己的堆栈。

无法回答您的其他问题,因为它们都依赖于JVM /底层平台。

答案 1 :(得分:0)

从程序员的角度来看,您需要知道的是它的工作原理,通常它工作正常。从JVM的角度来看,它在很大程度上取决于实现,并且可能会有所不同,具体取决于代码的运行位置。但最终 - 如上所述 - 并不重要,因为代码将以完全相同的方式执行,无论它在何处运行。