美文网首页
JVM学习:虚拟机栈-相关面试题

JVM学习:虚拟机栈-相关面试题

作者: 放开好人 | 来源:发表于2020-12-11 14:55 被阅读0次
    举例栈溢出的情况?(StackOverflowError)

    通过 -Xss 设置栈的大小


    调整栈大小,就能保证不出现溢出么?

    不能保证不溢出
    比如栈大小为50块钱,可能够用5天,现在调整为100块,顶多也只是多用几天,对于不出现溢出无法保证。


    分配的栈内存越大越好么?

    不是,一定时间内降低了OOM概率,但是会挤占其它的线程空间,因为整个虚拟机的内存空间是有限的。

    • 如果线程请求分配的栈容量超过Java虚拟机栈允许的最大容量,Java虚拟机将会抛出一个StackoverflowError 异常。
    • 如果Java虚拟机栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的虚拟机栈,那Java虚拟机将会抛出一个 OutofMemoryError 异常。

    垃圾回收是否涉及到虚拟机栈?

    不会


    何为线程安全?
    1. 如果只有一个线程才可以操作此数据,则必是线程安全的。
    2. 如果有多个线程操作此数据,则此数据是共享数据。如果不考虑同步机制的话,会存在线程安全问题。

    方法中定义的局部变量是否线程安全?

    如果对象是在内部产生,并在内部消亡,没有返回到外部,那么它就是线程安全的,反之则是线程不安全的。

    public class StringBuilderTest {
        //s1的声明方式是线程安全的
        public static void method1(){
            //StringBuilder:线程不安全
            StringBuilder s1 = new StringBuilder();
            s1.append("a");
            s1.append("b");
            //...
        }
        //sBuilder通过参数传递方法内,存在线程不安全的问题
        public static void method2(StringBuilder sBuilder){
            sBuilder.append("a");
            sBuilder.append("b");
            //...
        }
        //操作s1之后,将s1作为返回值返回,存在线程不安全的问题
        public static StringBuilder method3(){
            StringBuilder s1 = new StringBuilder();
            s1.append("a");
            s1.append("b");
            return s1;
        }
        //s1的操作:是线程安全的
        public static String method4(){
            StringBuilder s1 = new StringBuilder();
            s1.append("a");
            s1.append("b");
            return s1.toString();
        }
    
        public static void main(String[] args) {
            StringBuilder s = new StringBuilder();
            new Thread(() -> {
                s.append("a");
                s.append("b");
            }).start();
            method2(s);
        }
    }
    

    运行时数据区,哪些部分存在Error和GC?
    运行时数据区 是否存在Error 是否存在GC
    程序计数器
    虚拟机栈 是(SOF)
    本地方法栈
    方法区 是(OOM)
    是(OOM)

    相关文章

      网友评论

          本文标题:JVM学习:虚拟机栈-相关面试题

          本文链接:https://www.haomeiwen.com/subject/pjjgwktx.html