首页 > 其他分享 >JVM(四)虚拟机栈(三)虚拟机栈面试题

JVM(四)虚拟机栈(三)虚拟机栈面试题

时间:2023-05-17 19:13:29浏览次数:40  
标签:面试题 StringBuilder 虚拟机 线程 JVM 方法 溢出

JVM(四)虚拟机栈(三)虚拟机栈面试题


1 举例栈溢出的情况?

  • 当方法调用不停将栈帧压入虚拟机栈导致栈内空间不足而出现StackOverFlowError即是出现了栈溢出
  • 可以通过-Xss设置栈的大小,栈的大小可以是固定的也可以是动态变化的,如果固定且超出设定值则就会出现栈溢出;如果是动态变化的,栈空间不断扩容导致整个内存空间不足以分配,则会出现OutOfMemoryError
调整栈的大小就能保证栈不溢出了吗
  • 不能,只能延迟栈溢出的时间
分配的栈内存越大越好吗
  • 不是,毕竟整个内存的空间是有限的,栈占据的空间越大会导致其他部分占据的空间越小

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

​ 不会涉及到虚拟机栈,运行时数据区主要包括程序计数器本地方法栈虚拟机栈方法区五部分:

  • 程序计数器:存储指令地址,运行速度快占用空间小,不存在溢出问题,也没有垃圾回收
  • 本地方法栈:存在栈溢出,但是不存在垃圾回收
  • 虚拟机栈:存在栈溢出,但是不存在垃圾回收
  • 方法区:存在OOM和GC

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

  • 不一定,要看这个局部变量有没有指向外部的共享变量,如果有的话也是线程不安全的

  • 如果方法返回该局部变量,也有可能是线程不安全的,因为可能有其他线程接着对其进行修改:

    	public static StringBuilder method() {
            StringBuilder s = new StringBuilder();
            s.append("1");
            return s;
        }
    

    而下面的方法是线程安全的,因为String的不可变性:

    	public static StringBuilder method() {
            StringBuilder s = new StringBuilder();
            s.append("1");
            return s.toString();
        }
    

标签:面试题,StringBuilder,虚拟机,线程,JVM,方法,溢出
From: https://www.cnblogs.com/tod4/p/17409788.html

相关文章

  • Putty连接虚拟机(在win11中安装的ubuntu20.04)提示: Network error: Connection refus
    #开启防火墙sudoufwenable#开启22号端口sudoufwallow22#重启防火墙sudoufwreload#查看状态sudoufwstatus#安装sshsudoaptinstallopenssh-server#尝试能否远程登录sshlocalhost......
  • JAVA面试题及解析
    Java中有哪些集合Java中的集合可以分为4类,使用4个接口代表,分别是ListSetQueueMap。其中ListSetQueue都继承自Collection。List:是有序可重复集合,元素可为空,常用的有ArrayListLinkedListSet:无序不可重复集合元素可为空,常用的有HashSetTreeSetQueue:先进先出的队列,常......
  • 虚拟机计算机网络与物理机网络心得随笔
    虚拟机网络有三种模式:桥接模式、NAT模式、仅主机模式1.桥接模式虚拟机与物理机使用同一个网段,手写ip地址需要在写在同一个网段(什么是一个网段?192.168.31.xxx所有的这种都是一个网段)下面,子网掩码是为了掩盖、传递某些信息的,默认网关一个网段下面只有一个默认网关,所以往往子......
  • Android虚拟机的D盘储存
    大家知道安卓的模拟器位置默认是放在C盘的,这样比较占空间,可以通过创建·符号链接的方式来“欺骗”AS,从而创建到D盘:以管理员身份打开命令提示符,输入以下命令:mklink/DC:\Users\xxx\.android\avdD:\AndroidStudio\androidC\avd其中C:\Users\xxx\.android\avd是默认的安装......
  • 深入理解 python 虚拟机:多继承与 mro
    深入理解python虚拟机:多继承与mro在本篇文章当中将主要给大家介绍python当中的多继承和mro,通过介绍在多继承当中存在的问题就能够理解在cpython当中引入c3算法的原因了,从而能够帮助大家更好的了理解mro。python继承的问题继承是一种面向对象编程的概念,它可以让一......
  • 云原生背景下如何配置 JVM 内存
    背景前段时间业务研发反馈说是他的应用内存使用率很高,导致频繁的重启,让我排查下是怎么回事;在这之前我也没怎么在意过这个问题,正好这次排查分析的过程做一个记录。首先我查看了监控面板里的Pod监控:发现确实是快满了,而此时去查看应用的JVM占用情况却只有30%左右;说明并不是......
  • 5-1liunx虚拟机内存分配
    一、虚拟机硬件配置1.CPU:2核或更多2.内存:1G以上,推荐2G。3.硬盘:一块硬盘,200G。4.网卡:NAT模式。5.光盘:挂载对应版本的ISO文件。二、ISO下载地址:Centos http://mirrors.aliyun.com http://mirrors.sohu.com http://mirrors.163.comUbuntu https://cdimage.ubuntu.com......
  • Ep_操作系统面试题-什么是协程
     协程是一种比线程更加轻量级的存在,一个线程可以拥有多个协程。是一个特殊的函数,这个函数可以在某个地方挂起,并且可以重新在挂起处外继续运行。协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行),**不会像线程切换那样消耗资源。**面试宝典 很多人不......
  • JavaSE面试题【长期更新】
    面试题1包装类型的缓存机制了解过么包装类型的缓存机制了解过么/*ByteShortIntegerLong底层维护一个[-128,127]的缓存数组来提升性能Character底层维护一个[0,127]的数组Boolean包装类型直接返回true或者false*/2自动装箱和拆箱底层原理答案/*装箱将......
  • 如何在虚拟机下的ubuntu制作磁盘阵列以及对几种磁盘阵列的解释
    一、磁盘阵列的分类raid0:一块硬盘及以上优点:数据读取快缺点:没有冗余能力,硬盘损坏,数据丢失raid1:至少两块硬盘优点:数据安全强,一块硬盘运行,另外一块硬盘做镜像备份数据。一块坏了,另外一块硬盘也有完整的数据,保障运行。缺点:做raid1之后硬盘使用率为50%.raid5:至少三块硬盘优点......