前言:

这篇文章主要介绍了26道Spring经典面试题总结(附带答案)的相关资料,小编在网上看到的觉得挺不错的,现在分享给大家,希望对你们有所帮助。

另外本人整理收藏了多家公司面试知识点整理 ,以及各种Java核心知识点免费分享给大家,下方只是部分截图 想要资料的话也可以在文末领取

一、什么情况下会发生栈内存溢出?

1、栈是线程私有的,栈的生命周期和线程一样,每个方法在执行的时候就会创建一个栈帧,它包含局部变量表、操作数栈、动态链接、方法出口等信息,局部变量表又包括基本数据类型和对象的引用;
2、当线程请求的栈深度超过了虚拟机允许的最大深度时,会抛出StackOverFlowError异常,方法递归调用肯可能会出现该问题;

3、调整参数-xss去调整jvm栈的大小

二、详解JVM内存模型?

jvm将虚拟机分为5大区域,程序计数器、虚拟机栈、本地方法栈、java堆、方法区;

  • 程序计数器:线程私有的,是一块很小的内存空间,作为当前线程的行号指示器,用于记录当前虚拟机正在执行的线程指令地址;
  • 虚拟机栈:线程私有的,每个方法执行的时候都会创建一个栈帧,用于存储局部变量表、操作数、动态链接和方法返回等信息,当线程请求的栈深度超过了虚拟机允许的最大深度时,就会抛出StackOverFlowError;
  • 本地方法栈:线程私有的,保存的是native方法的信息,当一个jvm创建的线程调用native方法后,jvm不会在虚拟机栈中为该线程创建栈帧,而是简单的动态链接并直接调用该方法;
  • 堆:java堆是所有线程共享的一块内存,几乎所有对象的实例和数组都要在堆上分配内存,因此该区域经常发生垃圾回收的操作;
  • 方法区:存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码数据。即永久代,在jdk1.8中不存在方法区了,被元数据区替代了,原方法区被分成两部分;1:加载的类信息,2:运行时常量池;加载的类信息被保存在元数据区中,运行时常量池保存在堆中;

三、JVM中一次完整的GC是什么样子的?对象如何晋升到老年代?

java堆 = 新生代+老年代;新生代 = Eden + Suivivor(S0 + S1),默认分配比例是8:1:1;当Eden区空间满了的时候,就会触发一次Minor GC,以收集新生代的垃圾,存活下来的对象会被分配到Survivor区大对象(需要大量连续内存空间的对象)会直接被分配到老年代如果对象在Eden中出生,并且在经历过一次Minor GC之后仍然存活,被分配到存活区的话,年龄+1,此后每经历过一次Minor GC并且存活下来,年龄就+1,当年龄达到15的时候,会被晋升到老年代;当老年代满了,而无法容纳更多对象的话,会触发一次full gc;full gc存储的是整个内存堆(包括年轻代和老年代);;Major GC是发生在老年代的GC,清理老年区,经常会伴随至少一次minor gc;

四、Java中的垃圾回收算法?

java中有四种垃圾回收算法,分别是标记清除法、标记整理法、复制算法、分代收集算法;

  • 标记清除法:第一步:利用可达性去遍历内存,把存活对象和垃圾对象进行标记;第二步:在遍历一遍,将所有标记的对象回收掉;特点:效率不行,标记和清除的效率都不高;标记和清除后会产生大量的不连续的空间分片,可能会导致之后程序运行的时候需分配大对象而找不到连续分片而不得不触发一次GC;
  • 标记整理法:第一步:利用可达性去遍历内存,把存活对象和垃圾对象进行标记;第二步:将所有的存活的对象向一段移动,将端边界以外的对象都回收掉;特点:适用于存活对象多,垃圾少的情况;需要整理的过程,无空间碎片产生;
  • 复制算法:将内存按照容量大小分为大小相等的两块,每次只使用一块,当一块使用完了,就将还存活的对象移到另一块上,然后在把使用过的内存空间移除;特点:不会产生空间碎片;内存使用率极低;
  • 分代收集算法:根据内存对象的存活周期不同,将内存划分成几块,java虚拟机一般将内存分成新生代和老生代,在新生代中,有大量对象死去和少量对象存活,所以采用复制算法,只需要付出少量存活对象的复制成本就可以完成收集;老年代中因为对象的存活率极高,没有额外的空间对他进行分配担保,所以采用标记清理或者标记整理算法进行回收;

五、如何判断一个对象是否存活?

判断一个对象是否存活,分为两种算法1:引用计数法;2:可达性分析算法;

引用计数法:给每一个对象设置一个引用计数器,当有一个地方引用该对象的时候,引用计数器就+1,引用失效时,引用计数器就-1;当引用计数器为0的时候,就说明这个对象没有被引用,也就是垃圾对象,等待回收;缺点:无法解决循环引用的问题,当A引用B,B也引用A的时候,此时AB对象的引用都不为0,此时也就无法垃圾回收,所以一般主流虚拟机都不采用这个方法;

可达性分析法从一个被称为GC Roots的对象向下搜索,如果一个对象到GC Roots没有任何引用链相连接时,说明此对象不可用,在java中可以作为GC Roots的对象有以下几种:

虚拟机栈中引用的对象方法区类静态属性引用的变量方法区常量池引用的对象本地方法栈JNI引用的对象但一个对象满足上述条件的时候,不会马上被回收,还需要进行两次标记;第一次标记:判断当前对象是否有finalize()方法并且该方法没有被执行过,若不存在则标记为垃圾对象,等待回收;若有的话,则进行第二次标记;第二次标记将当前对象放入F-Queue队列,并生成一个finalize线程去执行该方法,虚拟机不保证该方法一定会被执行,这是因为如果线程执行缓慢或进入了死锁,会导致回收系统的崩溃;如果执行了finalize方法之后仍然没有与GC Roots有直接或者间接的引用,则该对象会被回收;

总结

在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。

资料领取:点我即可免费领取

2RLa-1624029785614)]

[外链图片转存中…(img-nqyM6c9X-1624029785615)]

真服了!java翻译器软件下载手机版相关推荐

  1. Java开发必学:Java翻译器软件下载手机版

    栈和队列部分(10) 设计一个有getMin功能的栈(士★☆☆☆) 由两个栈组成的队列(尉★★☆☆) 如何仅用递归函数和栈操作逆序一个栈(尉★★☆☆) 猫狗队列(士★☆☆☆) 用一个栈实现另一个栈的排 ...

  2. python软件下载手机版-Learn Python中文版app

    Learn Python中文版app是一个用手机学习Python编程的apk,软件经过本人亲自安装,可以用,自带夜间模式.语音模式以及编写代码的功能.可以用邮箱注册登录,很方便.每天利用零碎的时间学习 ...

  3. 火狐浏览器 模拟人工重复操作_火狐浏览器下载手机版-火狐浏览器下载安装到手机v68.6.0...

    [火狐浏览器下载手机版]是一款非常热门的手机浏览器,西门手游网为用户提供火狐浏览器下载安装到手机,火狐浏览器下载手机版中有非常丰富的浏览器功能,让用户可以在浏览器中体验到多种多样的服务,带给用户可以轻 ...

  4. 华为鸿蒙os手机系统下载,华为鸿蒙系统下载2.0手机版-鸿蒙os下载手机版最新下载-880手游网...

    鸿蒙系统下载手机版华为自主研发的一款手机系统,这款软件功能强大可以实现简洁化桌面一些常用的还有经典的功能都会显示,还可以实现终端连接,自动连接你的手机电视等智能化家居,支持全场景安全稳定又美观,还可以 ...

  5. 麒麟955升级鸿蒙系统,鸿蒙系统正式版下载-鸿蒙系统正式版下载手机版 v2.0下载-955游戏网...

    鸿蒙系统正式版下载手机版跟EMUI11不同点: 华为鸿蒙2.0系统是全新的操作系统,兼容安卓应用APP,可以下载安装运行安卓应用APP. 在系统界面方面现在华为鸿蒙2.0系统手机版跟华为EMUI11系 ...

  6. 鸿蒙系统明年上市巧,鸿蒙系统官网下载-鸿蒙系统官网下载手机版 v2.0下载-955游戏网...

    鸿蒙系统官网下载手机版优势: 1.华为自家的操作系统,不管是兼容性还是稳定性都比较强大 2.可以适用的地方更多的,手机.电脑.手表.电视等等都可以使用 3.这款操作系统最早看你会在今年秋季上市,最晚会 ...

  7. 赛效:wps下载手机版怎么操作的?

    了解更多办公应用工具,大家可进入赛效官方网站查看应用软件栏目了解更多~ 不少人在电脑上使用wps的次数是比较频繁的,使用wps不仅可以创建文档,同时也可以创建表格来记录工作中的数据.会议内容等,但是台 ...

  8. 最火的腾云驾雾特效软件ae手机版制作飞天特效的教程

    最火的腾云驾雾特效软件ae手机版制作飞天特效的教程,最火的特效软件手机版腾云驾雾特效软件ae手机版特效软件怎么制作飞天特效视频的,今天来讲一下,具体的制作步骤.手机上安装特效行者. 手机安装好软件制作 ...

  9. 华为鸿蒙系统手机怎么下载,鸿蒙系统官网下载手机版-华为鸿蒙系统官网下载手机版-66街机网...

    华为鸿蒙系统官网下载手机版可以轻松守护用户的手机数据的安全,提升隐私的保护能力.在华为鸿蒙系统官网下载手机版中采用的是最高终端安全的等级设计打造的,多重防护的系统,让用户放心使用.并且不仅可实现手机系 ...

最新文章

  1. python自带的url提取器
  2. 2019年, SGG论文汇总
  3. 主机Ping扫描自动化工具
  4. yeoman生成react基本架构
  5. linux,下载与安装
  6. oracle ogg 12安装,Oracle GoldenGate Studio 12.2.1.3安装
  7. 潮流设计师创作灵感|是时候设计一下蒸汽波海报了!
  8. 网络间谍组织 SideCopy 攻击印度政府和军队组织
  9. 【Solr原理】Leader Shard选举
  10. 分享淘宝利器飞天侠4.1至尊商业版 去除域名限制 绕过淘宝API直接采集
  11. 爬取B站弹幕并生成HTML格式的词云图
  12. 编1加到100的代码用C语言,用C语言编写一个程序,计算从1加到100的和,并将结果输出。跪求代码,急!...
  13. 用Python3创建httpServer
  14. 给Date加上23时59分59秒
  15. 李白的诗-按时间顺序的创作
  16. Android Bmob后端云简单使用-增删改查
  17. 高等教育学备考:教育学概述
  18. 计算机电源接口在哪,电脑电源接口定义图解
  19. 一直被模仿从未被超越的AWS为什么这么强?
  20. MySQL 官网下载地址

热门文章

  1. 中国姜黄根提取物行业市场供需与战略研究报告
  2. 2020年春季入学学员计算机应用基础本,2020年春季考试《计算机应用基础》在线考核试题.doc(9页)-原创力文档...
  3. Raspberry Pi 的新用法:检测家中的漏水情况
  4. 与 HarmonyOS 拼速度?谷歌正式推出 Fuchsia OS!
  5. 免费开源:人人必备的数据分析技能
  6. 三步走!从头开始设计一款游戏
  7. 全网首次公开!iOS14 到来前,开发者必需的时间表及 To do list
  8. 女朋友学高数,我花了 15 分钟用栈给她写了一个计算器 | 原力计划
  9. 自动驾驶即将迎来下一个飞跃?
  10. 12 大 AI App 技术创意,教你如何在 2020 年赚到钱