JVM的内存分为堆(heap)和栈(thread stack)两类区域,分别存放不同数据,规则如下。
以下数据存放在heap中:
- 所有对象(object)。但对象的method里的local variable存放在stack中。
- 所有对象的member variable,不论是primitive或是指向一个对象。
- 所有静态类的variable
以下数据存放在stack中(每个线程有自己的thread stack,互相不可见):
- 当前线程执行过的所有方法(method)
- 当前线程内所有local variable(method里的变量)。如果此变量指向一个对象,则变量存放在stack中而对象仍然存放在heap中。
- 当前线程内所有primitive类型(如int, long, boolean)的local variable
参考资料:
欢迎转载
请保留原始链接:https://bjzhanghao.com/p/743
请保留原始链接:https://bjzhanghao.com/p/743