java栈内存溢出怎么产生
发布网友
发布时间:2022-04-19 13:05
我来回答
共2个回答
热心网友
时间:2023-09-05 17:17
不只是Java而已。所有编程语言都会产生包子的问题。默认栈大小为2M,如果栈中的临时对象过多或者是过大就会爆栈追答包子什么鬼,爆栈
热心网友
时间:2023-09-05 17:17
1.如果线程请求分配的栈容量超过java虚拟机栈允许的最大容量的时候,java虚拟机将抛出一个StackOverFlowError异常。
2.如果java虚拟机栈可以动态拓展,并且扩展的动作已经尝试过,但是目前无法申请到足够的内存去完成拓展,或者在建立新线程的时候没有足够的内存去创建对应的虚拟机栈,那java虚拟机将会抛出一个OutOfMemoryError异常。
刚看到题主在问题下的评论,xss分配的应该是每个线程的栈大小,线程数量和整个进程的大小是由操作系统来*的。
对于单个线程,栈内存容量减小,或者变量表深度增大,就会造成StackOverFlow,这点我跟题主想的一样。
至于是堆内存溢出还是方法区内存溢出还是栈内存溢出,其实可以用一些工具比如
JConsole来监视。