Java 堆和线程栈分别主要保存什么?
参考答案
堆是多个线程共享的运行时区域,通常保存对象与数组;每个线程有自己的 Java 虚拟机栈,栈帧保存方法调用相关的局部变量、操作数等信息。
题目解析
“所有对象一定分配在堆上”过于绝对,JIT 优化可能消除某些实际分配;也不要把线程栈理解为业务对象的长期存储。
堆是多个线程共享的运行时区域,通常保存对象与数组;每个线程有自己的 Java 虚拟机栈,栈帧保存方法调用相关的局部变量、操作数等信息。
“所有对象一定分配在堆上”过于绝对,JIT 优化可能消除某些实际分配;也不要把线程栈理解为业务对象的长期存储。