当前位置:首页 > 开发语言 > 正文

jvm调优面试题(redis面试必会6题经典)

jvm调优面试题(redis面试必会6题经典)

各位老铁们,大家好,今天由我来为大家分享jvm调优面试题,以及redis面试必会6题经典的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的...

各位老铁们,大家好,今天由我来为大家分享jvm调优面试题,以及redis面试必会6题经典的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

jvm性能调优是工作一到三年的程序员该掌握的吗

看业务需求而定,好比有人四岁就会做饭,有人四十岁都不会。如果是高并发或者客户端程序的话,还是很有必要的。当然,也有一辈子都不会还能混的好好的。

求推荐一本jvm调优的书,最好简单易懂,循序渐进

微信读书深入理解JAVA虚拟机

Java程序员面试中容易被问哪些问题

1.前台后台都做吗?10分

这一般是我的第一个问题,超过90%的人会回答:"都做,后台多一点,前台少一点"

这不是我想要的答案,鬼都知道程序员都要多少涉及一下前台,后台更不用说了.

碰到过一个聪明人,他是这么回答的:前台js写的比较熟练,html的框架模板也能搭建的非常整齐美观,只是特效能力比较差

这个问题我不想过多讨论,加分但不减分

2.事务,什么是事务,为何用事务10分

大部分面试者,就会举各种各样的例子(比如银行存钱,这个最多)来说明这个问题,其实他们都理解.

但这不是我想要的答案,我期望的答案只有一句:"保证数据的一致性和完整性",可惜只有5%左右的人答出来了

这个问题可以大概了解出面试者的分析能力,以及语言总结能力,还有他们对这个玩意的理解程度

答不出减分,举例子不加分

3.面向切面(AOP),原理是什么10分

这个就是对技能的掌握程度了

大部分又是举例子,什么找中介啊之类的,其实就是来掩盖他们懂一点实现逻辑,但是不知道源码怎么实现的.

但还真是有学霸能把代理的原理讲出来,非常好.

答不出减分,举例子不加分,讲出原理双倍分.

4.两个项目之间如何通信10分

很基础的问题,答上来就有分,说明你接触或者了解过网络

5.在上个问题基础之上问,碰到乱码怎么解决,utf-8和gbk可以直接转换么10分

大部分应聘者到这里基本就开始胡扯了.有说声明字符串编码接收的,有说改项目编码的,各种各样五花八门.

更有甚者,utf-8和gbk可以直接转换...

直接说明了他们完全没有遇到过此类问题,也并不了解编码.

答不出不减分,胡扯减分,答对双倍分.

6.简述一项技术或设计模式的原理20分

这个几乎是送分的,但90%的人答不出.我很不解.

答不出减分,答出加分

-----------------------------------------------------------------------------------------------------------------------------

问完以上几个问题大概可以判断出应聘者的技术程度

不管怎么样

希望多锻炼自己的口才与技术.

jvm性能调优都做了什么

JVM性能调优有很多设置,这个参考JVM参数即可.主要调优的目的:控制GC的行为.GC是一个后台处理,但是它也是会消耗系统性能的,因此经常会根据系统运行的程序的特性来更改GC行为控制JVM堆栈大小.一般来说,JVM在内存分配上不需要你修改,(举例)但是当你的程序新生代对象在某个时间段产生的比较多的时候,就需要控制新生代的堆大小.同时,还要需要控制总的JVM大小避免内存溢出控制JVM线程的内存分配.如果是多线程程序,产生线程和线程运行所消耗的内存也是可以控制的,需要通过一定时间的观测后,配置最优结果

如何合理的规划一次jvm性能调优

很多同学觉得JVM调优就是简单调整几个JVM内存几个参数,我认为这个观点是非常片面的。JVM调优有很多门槛,不只是修改几个参数那个简单。

其实我想回答如何进行JVM调优,但是可能和题主的问题稍微有些出入。但是我想通过我对JVM的理解帮助到更多这方面知识欠缺的童鞋。

关注必回!

我认为JVM调优可以从以下几个方面考虑:

对JVM内存模型有一定认识是能够对JVM调优的基本门槛,下面我简单介绍一下jvm内存模型,对这部分知识还有不明确的可以阅读我jvm详解的文章。jvm内存可以简单分为堆,栈和元空间。题主的调优主要针对堆内存,当然也有栈。但是前者居多。jvm的精明之处!垃圾回收机制,jvm根据内存使用情况,根据引用计数法和根目录遍历的方式结合age对堆内对象的生命周期进行管理,当然因为一个对象的创建在堆栈中都分配内存空间(引用在栈中,对象本身在堆中),所以垃圾回收机制对堆和栈都效果!分代垃圾回收机制,通过分代更合理的掌控对象的生命周期。根据业务需要合理的进行GC以达到最优内存使用率。分析JVM内存的增长因子,快速定位大块老赖对象

如果在程序运行期间,内存突然上升,并且在一定时间没有下降趋势,那么说明,有一大波对象逃过了垃圾回收,我们都知道,新生代垃圾回收是频繁的,但是新生代内存空间有限,内存持续上升,说明大部分对象已经进入老年带,根据引用计数和不可达算法,快速定位问题,留意近期的哪些改动会产生大量持续被引用对象,或者仅仅是持续产生大量对象,因为gc往往是阻塞的,短时间内gc掉大量对象对应用程序也会造成伤害,倒置线程长时间等待以致假死。

在这个时候猜测往往是效率最高的解决方案!大胆的预测问题并去验证它。如果猜测短时间内没有定位问题,那么通过top命令查找线程一步一步的找吧,也很快的,因为手机码字,这块儿就不细说了,有不清楚的私信!

JAVA虚拟机启动过程监控。

一个项目启动是JVM会将用到的类文件加载进内存,加载所有配置,加载所有bean对象。在这个过程中内存是不断增加的,可以通过jvm-

monitor.sh

。想了解JVM虚拟机启动的可以先看看自己公司项目的启动日志,可窥一二。

脚本进行内存监控,具体脚本内容比较冗长,在问答中不便贴出来了,有需要的童鞋直接私信我。

调整JVM堆栈内存分配大小,合理规避业务中内存溢出等问题

理论不多说,直接给出结论:

堆内存中,老年代:新生代比例=2:1;

新生代中,Eden:SurvivorA:SurvivorB=8:1:1;

-Xms:初始化堆大小;Xmx:最大堆大小;

-XX:NewSize=x,设置年轻代大小;-XXNewRatio=x年轻代和老年代比例。

JVM调优工具的使用,快速定位内存问题利器

遇到

1、java.lang.OutOfMemoryError:PermGenspace

2、java.lang.OutOfMemoryError:Javaheapspace两种异常,通过大胆猜测未能解决问题的,可以通过LInux命令查找到问题代码块。常用命令简单整理如下(需要实战的可以私信我):

top,通过top命令,快速定位占用内存较大的java进程。

jmap-histo:live[pid],查看当前java进程中活跃对象的数目和占用内存大小。

jmap-dump:live,format=b,file=xxx.xxx[pid]导出指定pid的java进程的内存占用情况,以便通过内存分析工具进行分析,具体的内存分析工具包括HeapSnapShot、HeapViewer、MAT等。门槛都不高,能够帮助我们快速定位出问题症结。

java本身也提供好几款内存监控分析插件,位于jdk的bin目录下:具体使用方法本人多年前在csdn上有文章详解,这里不允许贴链接,也就不多说了。

本人从事软件工作多年,一路走来也不断积累不断学习,整理了一些java开发相关的资料,也包含JVM调优,需要的可以在下方留言或者留下邮箱(不是圈粉,所以可以不用关注)。

我是狂客说技术,总想着把自己掌握的东西整理一下分享出来,怎奈时间有限,可能文中也有不当的地方,欢迎大家指出,也欢迎大家点我关注。

jvm调优基本思路

jvm调优主要是针对垃圾收集器的收集性能优化,令运行在虚拟机上的应用能够使用更少的内存以及延迟获取更大的吞吐量。

1、性能调优原则

在调优过程中,我们应该谨记以下3个原则,以便帮助我们更轻松的完成垃圾收集的调优,从而达到应用程序的性能要求。

1.1MinorGC回收原则:每次minorGC都要尽可能多的收集垃圾对象。以减少应用程序发生FullGC的频率。

1.2GC内存最大化原则:处理吞吐量和延迟问题时候,垃圾处理器能使用的内存越大,垃圾收集的效果越好,应用程序也会越来越流畅。

1.3GC调优3选2原则:在性能属性里面,吞吐量、延迟、内存占用,我们只能选择其中两个进行调优,不可三者兼得。

2、性能定义

要查找和评估器性能瓶颈,首先要知道性能定义,对于jvm调优来说,我们需要知道以下三个定义属性,依作为评估基础:

吞吐量:重要指标之一,是指不考虑垃圾收集引起的停顿时间或内存消耗,垃圾收集器能支撑应用达到的最高性能指标。

延迟:其度量标准是缩短由于垃圾啊收集引起的停顿时间或者完全消除因垃圾收集所引起的停顿,避免应用运行时发生抖动。

内存占用:垃圾收集器流畅运行所需要的内存数量。

这三个属性中,其中一个任何一个属性性能的提高,几乎都是以另外一个或者两个属性性能的损失作代价,不可兼得,具体某一个属性或者两个属性的性能对应用来说比较重要,要基于应用的业务需求来确定。

OK,关于jvm调优面试题和redis面试必会6题经典的内容到此结束了,希望对大家有所帮助。

最新文章