栈用来表示程序的运行处理逻辑,而堆用来存储数据。
java中每个线程都有一个独立于其他线程的线程栈,每个线程栈代表了不同的处理逻辑。线程栈大小一般为1M,可根据-Xss参数调整。
堆是程序存储数据(对象)的地方,堆中的数据是共享的,这样的设计一方面便于线程间交互,另一方面堆可以存储一些公共的常量、对象及缓存,节省内存。
java的数据类型可以分为基本类型和引用类型。基本类型因为大小固定,且长度均在1-8个字节,因此存储在栈中。 对象存储在堆中,对象的引用存储在栈中。
java线程栈的大小可以通过-Xss设置,当栈中存储数据比较多时,可适当调大线程栈。java.lang.StackOverflowError异常指示的就是线程栈满了。一般出现这个异常的原因与递归有关。
本文介绍了Java中栈和堆的基本概念及其使用场景。栈用于表示程序的运行逻辑,每个线程拥有独立的线程栈;堆则用于存储数据,如对象实例等。文章还详细解释了Java中不同数据类型的存储位置,并提供了如何通过参数调整线程栈大小的方法。
172万+

被折叠的 条评论
为什么被折叠?



