当前位置:首页 > Java程序 > 正文内容

java面试越来越难(java面试最难的问题)

abcsky887个月前 (10-27)Java程序88

今天给各位分享

一、JVM常用参数JVM主要参数:堆设置、回收器选择(串行、并行、并发收集器)二、JVM的内存结构根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分1. Java虚拟机栈:。

java面试越来越难(java面试最难的问题)

线程私有;每个方法在执行的时候会创建一个栈帧,存储了局部变量表,操作数栈,动态连接,方法返回地址等;每个方法从调用到执行完毕,对应一个栈帧在虚拟机栈中的入栈和出栈2. 堆:线程共享;被所有线程共享的一块内存区域,在虚拟机启动时创建,用于存放对象实例。

3. 方法区:线程共享;被所有线程共享的一块内存区域;用于存储已被虚拟机加载的类信息,常量,静态变量等4. 程序计数器:线seo网站推广如何做程私有;是当前线程所执行的字节码的行号指示器,每条线程都要有一个独立的程序计数器,这类内存也称为“线程私有”的内存。

5. 本地方法栈:线程私有;主要为虚拟机使用到的Native方法服务。

三、垃圾回收对象时程序的逻辑是否可以继续执行不同回收器不同:Serial、ParNew会暂停用户所有线程工作;CMS、G1会在某一阶段暂停用户线程内存分配策略对象优先在Eden分配:若Eden无空间,Java虚拟机发起一次Minor GC。

大对象直接进入老年代:大对象指需要大量连续内存空间的对象(如长数组、长字符串)长期存活的对象进入老年代:每个对象有一个对象年龄计数器,age=15晋升为老年代age+1的两个seo网站推广如何做情况:对象在Eden出生并经过一次Minor GC存活且被survivor容纳;在survivor区经历过一次minor GC。

四、jvm OutMemory的种类堆溢出:被缓存的实例对象,大的map,list引用大的对象等栈溢出:栈帧太多方法区溢出:加载很多类会有可能出现,GC不会在主程序运行期对此区进行清理,可通过设置jvm启动参数解决:-XX:MaxPermSize=256m

五、堆内存设置的参数是什么?-Xmx 设置堆的最大空间大小-Xms 设置堆的最小空间大小

六、Perm Space中保存什么数据?会引起OutOfMemory吗?加载class文件会引起,出现异常可以设置 -XX:Peseo网站推广如何做rmSize 的大小JDK 1.8后,字符串常量不存放在永久带,而是在堆内存中,JDK8以后没有永久代概念,而是用元空间替代,元空间不存在虚拟机中,二是使用本地内存。

七、java中方法区存放哪些东西?jvm如何控制方法区的大小以及内存溢出的原因和解决方法区大小不是固定的,jvm可根据需要动态调整方法区主要存放类信息、常量、静态变量、编译后的代码控制方法区大小:减少程序中class数量、尽量使用较少的静态变量。

修改:-XX:MaxPerSize调大StackOverflowError异常:线程的方法嵌套调用层次太多,随着Java栈中桢的增多,最终会由于该线程Java栈中所有栈帧总和大于-Xss设seo网站推广如何做置的值而产生此异常。

八、强引用,软引用和弱引用的区别强引用:只有这个引用被释放之后,对象才会被释放掉,只要引用存在,垃圾回收器永远不会回收,这是最常见的New出来的对象软引用:内存溢出之前通过代码回收的引用软引用主要用户实现类似缓存的功能,在内存足够的情况下直接通过软引用取值,无需从繁忙的真实来源查询数据,提升速度;当内存不足时,自动删除这部分缓存数据,从真正的来源查询这些数据。

弱引用:第二次垃圾回收时回收的引用,短时间内通过弱引用取对应的数据,可以取到,当执行过第二次垃圾回收时,将返回null弱引用主要用于监控对象是否已经被垃圾回收器标记为即将回收的垃圾,可以通过弱引用的isEnQueuedseo网站推广如何做方法返回对象是否被垃圾回收器标记。

九、java中方法区存放哪些东西?jvm如何控制方法区的大小以及内存溢出的原因和解决方法区大小不是固定的,jvm可根据需要动态调整方法区主要存放类信息、常量、静态变量、编译后的代码控制方法区大小:减少程序中class数量、尽量使用较少的静态变量。

修改:-XX:MaxPerSize调大StackOverflowError异常:线程的方法嵌套调用层次太多,随着Java栈中桢的增多,最终会由于该线程Java栈中所有栈帧总和大于-Xss设置的值而产生此异常。

十、jvm OutMemory的种类堆溢出:被缓存的实例对象,大的map,list引用大的对象等栈溢出:栈帧太多seo网站推广如何做方法区溢出:加载很多类会有可能出现,GC不会在主程序运行期对此区域进行清理,可通过设置jvm启动参数解决:-XX:MaxPermSize=256m

十一、GC收集器有哪些?CMS收集器与G1收集器的特点并行收集器:串行收集器使用一个单独的线程进行收集,GC时服务有停顿时间串行收集器:次要回收中使用多线程来执行CMS收集器是基于“标记—清除” 算法实现的,经过多次标记才会被清除。

G1从整体来看是基于“标记—整理”算法实现的收集器,从局部(两个Region之间)上来看是基于“复制”算法实现的十二、Eden和Survivor的比例分配等默认比例8:1 大部分对象都是朝生夕死 复制算法的基本思想就是将内seo网站推广如何做存分为两块,每次只用其中一块,当这一块内存用完,就将还活着的对象复制到另外一块上面。

复制算法不会产生内存碎片十三、简述java内存分配与回收策率以及Minor GC和Major GC对象优先在堆的Eden区分配大对象直接进入老年代.长期存活的对象将直接进入老年代.当Eden区没有足够的空间进行分配时,虚拟机会执行一次Minor GC.Minor Gc通常发生在新生代的Eden区,在这个区的对象生存期短,往往发生Gc的频率较高,回收速度比较快;Full Gc/Major GC 发生在老年代,一般情况下,触发老年代GC的时候不会触发Minor GC,但是通过配置,可以在Full GC之前进行一次Mseo网站推广如何做inor GC这样可以加快老年代的回收速度。

十四、为什么要用线程池那先要明白什么是线程池线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建一个线程使用线程池的好处线程池改进了一个应用程序的响应时间。

由于线程池中的线程已经准备好且等待被分配任务,应用程序可以直接拿来使用而不用新建一个线程线程池节省了CLR 为每个短生存周期任务创建一个完整的线程的开销并可以在任务完成后回收资源线程池根据当前在系统中运行的进程来优化线程时间片。

线程池允许我们开启多个任务而不用为每个线程设置属性线程池允许我们为正在执行的任务的程序参数传递一个包含状态信息的对象引seo网站推广如何做用线程池可以用来解决处理一个特定请求最大线程数量限制问题十五、HashMap和ConcurrentHashMap的区别。

HashMap不是线程安全的,而ConcurrentHashMap是线程安全的ConcurrentHashMap采用锁分段技术,将整个Hash桶进行了分段segment,也就是将这个大的数组分成了几个小的片段segment,而且每个小的片段segment上面都有锁存在,那么在插入元素的时候就需要先找到应该插入到哪一个片段segment,然后再在这个片段上面进行插入,而且这里还需要获取segment锁。

ConcurrentHashMap让锁的粒度更精细一些,并发性能更好码字不易seo网站推广如何做,各位大佬如果觉得这篇文章还可以的话,麻烦动动小手指头帮我>>>>---点赞---<<<<>>>>---转发---<<<>

关注<<我方便查看哦!!!

扫描二维码推送至手机访问。

版权声明:本文由海南拓宏网络科技工作室发布,如需转载请注明出处。

本文链接:http://4blc.com/post/495.html

分享给朋友:

“java面试越来越难(java面试最难的问题)” 的相关文章

java培训出来工资大概多少(java培训一个月多少钱)

本文分享给大家的是: 原标题:java培训中心学习后找不到工作是什么原因现在随着开发市场的不断的发展,市面上相关的培训机构越来越多,对于零基础小伙伴学习java开发技术来说,java培训固然是一个比较靠谱的学习方式,但是小伙伴在选择的时候也不要过于盲目从众,在靠谱的培训机构学习ja...

2020专业毕业生薪酬排行榜最新(2020专业毕业生薪酬排行榜公布)

本篇文章给大家谈谈 薪资收入作为评价毕业生就业质量的重要标准,一直都是大学生求职时最关注的因素之一,它也是考生择校、选专业的参考因素之一近日,《2021年中国大学生就业报告》(就业蓝皮书)统计了2021届毕业生月收入较高的15个本科专业,其中5个专业已经在。 沈阳工学院开设...

java基础学完能干什么(java基础学完要多久)

本文分享给大家的是: 对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变面向过程就是把你的代码封装成函数,然后依次去做一件事情,面向过程是把你要做的事情抽象成对象,告诉对象去做。 所以要想学好java...

鸿蒙系统开源码(鸿蒙源码 安卓内核)

本篇文章给大家谈谈 百万汉字注解 >> 精读内核源码,中文注解分析, 深挖地基工程,大脑永久记忆,四大码仓每日同步更新百篇博客分析 >> 故事说内核,问答式导读,生活式比喻,表格化说明,图形化展示,多站点每日同步更新 系列篇硬件部分说明基于ARM72...

一般的java培训多少钱一个月(java培训多少钱?)

本文分享给大家的是:   需要看大家是选择线上培训还是线下培训,Java线上培训价格在几千元到一万元左右;Java线下培训价格在1万五到两万元左右并且根据培训机构的实力、学习基础、教学服务、学习地区等因素的不同,所需要的费用会有所差异。 java培训要多少钱java培训线上...

脑卒中康复科排名(脑卒中康复哪个医院好)

今天给各位分享 脑血管疾病按病理性质可分为缺血性卒中和出血性卒中,前者包括脑血栓形成和脑栓塞,统称为脑梗死,后者则包括脑出血和蛛网膜下腔出血脑梗通常有发病率高、致残率高、死亡率高和复发率高的疾病特征,而卒中康复是经循证医学证实的减少后遗症最有效的方法之一。 所以大多数的卒中...