JVM-虚拟机栈面试题
常见面试题
举例栈溢出的情况
当栈空间不足时会出现StackOverflowError
通过-Xss设置栈的大小
当整个内存空间不足时,栈再去扩充时会出现OOM异常
调整栈大小,是否能保证不出现溢出
有可能,不能保证不出现,只能调整栈的大小,会让出现异常的情况晚一些,但不能保证不
会出现
垃圾回收是否会涉及到虚拟机栈
不会,但是存在OOM,Java栈大小是动态或者固定不变的。如果是动态扩展,无法申请到足够内存OOM,如果是固定,线程请求的栈容量超过固定值,则StackOverflowError
分配的栈内存越大越好吗
不是,可以避免过早出现StackOverflowError,但还是会有,会导致其他内存空间变小
方法中定义的局部变量是否线程安全
具体问题具体分析
- 如果在方法内部的对象,不返回,是安全的
1 |
|
- 如果在方法参数的对象,是不安全的
1 |
|
- 如果在方法内有对象返回的,是不安全的
1 |
|
- 如果在方法内有对象返回的,返回的是一个新的String对象,是安全的
1 |
|