ToB企服应用市场:ToB评测及商务社交产业平台

标题: JVM口试真题总结(九) [打印本页]

作者: 莫张周刘王    时间: 3 天前
标题: JVM口试真题总结(九)
文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/

形貌CMS垃圾网络的工作过程
   CMS(Concurrent Mark Sweep)垃圾网络器的工作过程
  重要可以分为以下四个阶段:
  初始标记(Initial Mark)
  
  并发标记(Concurrent Mark)
  
  重新标记(Remark)
  
  并发清除(Concurrent Sweep)
  
  如何防止内存走漏?
   防止内存走漏重要需要对代码进行精细的管理和控制,以下是一些常用的方法:
  及时开释对象:
  
  使用弱引用(WeakReference):
  
  制止使用静态变量:
  
  及时关闭流、数据库毗连等资源:
  
  使用finally块:
  
  制止在对象中保存过多的数据:
  
  使用内存分析工具:
  
  对聚集类进行恰当的管理:
  
  留意线程的使用:
  
  简述内存屏障及其类型
   内存屏障(Memory Barrier),也被称为内存栅栏,是一种处理器指令
  
  它可以确保某些内存操作的顺序性,以及它们对其他处理器可见的顺序。
  内存屏障是处理器计划和多线程编程中的紧张概念
  
  内存屏障重要有以下四种类型:
  LoadLoad屏障:
  
  StoreStore屏障:
  
  LoadStore屏障:
  
  StoreLoad屏障:
  
  在Java中,volatile关键字和synchronized关键字的实现就使用了内存屏障。
  例如,对volatile变量的写操作会插入StoreStore和StoreLoad屏障
  
  而synchronized关键字在锁定息争锁时也会插入相应的内存屏障,以确保操作的顺序性和可见性。
  哪些情况会导致栈内存溢出?
   栈内存溢出一般发生在递归调用且递归深度过深的场景。
  
  栈内存重要用于存储局部变量和实验动态链接,还用于方法调用和返回。
  
  每个线程都有一个私有的JVM栈,其大小可以固定也可以动态扩展。
  
  例如,假如你写了一个递归函数,没有提供恰当的递归出口,那么这个函数就会无限递归下去
  
  1. public void recursive() {
  2.     recursive();
  3. }
复制代码
以上面的代码为例,这个方法会不断地调用自己,每次调用都会创建一个新的栈帧并压入栈中
  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4