zoukankan      html  css  js  c++  java
  • 虚拟机栈相关的问题

    Q:举例栈溢出的情况?(StackOverflowError)

    A:递归调用等,通过-Xss设置栈的大小

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

    A:不能,如递归无限次数肯定会溢出,调整栈大小只能保证溢出的时间晚一些

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

    A:不是 会挤占其他线程的空间

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

    A:不会

    内存区块 Error GC
    程序计数器
    本地方法栈
    虚拟机栈
    堆区
    方法区

     

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

    A:要具体情况具体分析

     1 /**
     2  * 方法中定义的局部变量是否线程安全?具体情况具体分析
     3  *
     4  * 何为线程安全?
     5  *     如果只有一个线程可以操作此数据,则毙是线程安全的。
     6  *     如果有多个线程操作此数据,则此数据是共享数据。如果不考虑同步机制的话,会存在线程安全问题
     7  *
     8  * StringBuffer是线程安全的,StringBuilder不是
     9  */
    10 public class StringBuilderTest {
    11 
    12     //s1的声明方式是线程安全的
    13     public static void method1(){
    14         StringBuilder s1 = new StringBuilder();
    15         s1.append("a");
    16         s1.append("b");
    17     }
    18 
    19     //stringBuilder的操作过程:是不安全的,因为method2可以被多个线程调用
    20     public static void method2(StringBuilder stringBuilder){
    21         stringBuilder.append("a");
    22         stringBuilder.append("b");
    23     }
    24 
    25     //s1的操作:是线程不安全的 有返回值,可能被其他线程共享
    26     public static StringBuilder method3(){
    27         StringBuilder s1 = new StringBuilder();
    28         s1.append("a");
    29         s1.append("b");
    30         return s1;
    31     }
    32 
    33     //s1的操作:是线程安全的 ,StringBuilder的toString方法是创建了一个新的String,s1在内部消亡了
    34     public static String method4(){
    35         StringBuilder s1 = new StringBuilder();
    36         s1.append("a");
    37         s1.append("b");
    38         return s1.toString();
    39     }
    40 
    41     public static void main(String[] args) {
    42         StringBuilder s = new StringBuilder();
    43         new Thread(()->{
    44             s.append("a");
    45             s.append("b");
    46         }).start();
    47 
    48         method2(s);
    49 
    50     }
    51 
    52 }

    附:JVM学习目录

     

  • 相关阅读:
    要坚持的好习惯
    Attribute与Property关系
    浅谈ES6中super关键字
    JS权威指南读书笔记(七)
    JS权威指南读书笔记(六)
    JS权威指南读书笔记(五)
    JS权威指南读书笔记(四)
    函数
    对象
    数值
  • 原文地址:https://www.cnblogs.com/ding-dang/p/13072678.html
Copyright © 2011-2022 走看看