JAVA_JVM_面试题

JVM 知识

1、什么情况下会发生栈内存溢出。

如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常。 如果虚拟机在动态扩展栈时无法申请到足够的内存空间,则抛出OutOfMemoryError异常。

参照:http://wiki.jikexueyuan.com/project/java-vm/storage.html

2、JVM 的内存结构,Eden Survivor 比例。

eden survior 是按81分配的

http://blog.csdn.net/lojze_ly/article/details/49456255

3、jvm 中一次完整的 GC 流程是怎样的,对象如何晋升到老年代,说说你知道的几种主要的jvm 参数。

对象诞生即新生代->eden,在进行minor gc过程中,如果依旧存活,移动到from,变成Survivor,进行标记代数,如此检查一定次数后,晋升为老年代,

http://www.cnblogs.com/redcreen/archive/2011/05/04/2037056.html 

http://ifeve.com/useful-jvm-flags/ 

https://wangkang007.gitbooks.io/jvm/content/jvmcan_shu_xiang_jie.html

4、你知道哪几种垃圾收集器,各自的优缺点,重点讲下 cms,包括原理,流程,优缺点

SerialparNewParallelScavengeSerialOldParallelOldCMSG1

https://wangkang007.gitbooks.io/jvm/content/chapter1.html

5、垃圾回收算法的实现原理。

http://www.importnew.com/13493.html

6、当出现了内存溢出,你怎么排错。

首先分析是什么类型的内存溢出,对应的调整参数或者优化代码。

https://wangkang007.gitbooks.io/jvm/content/4jvmdiao_you.html

7、JVM 内存模型的相关知识了解多少,比如重排序,内存屏障,happen-before,主内存,工作内存等。

内存屏障:为了保障执行顺序和可见性的一条cpu指令

重排序:为了提高性能,编译器和处理器会对执行进行重拍

happen-before:操作间执行的顺序关系。有些操作先发生。

主内存:共享变量存储的区域即是主内存

工作内存:每个线程copy的本地内存,存储了该线程以读/写共享变量的副本

http://ifeve.com/java-memory-model-1/ 

http://www.jianshu.com/p/d3fda02d4cae 

http://blog.csdn.net/kenzyq/article/details/50918457

8、简单说说你了解的类加载器。

类加载器的分类(bootstrap,ext,app,curstom),类加载的流程(load-link-init)

http://blog.csdn.net/gjanyanlig/article/details/6818655/

9、讲讲 JAVA 的反射机制。

Java程序在运行状态可以动态的获取类的所有属性和方法,并实例化该类,调用方法的功能

http://baike.baidu.com/link?url=C7p1PeLa3ploAgkfAOK-4XHE8HzQuOAB7K5GPcK_zpbAa_Aw-nO3997K1oir8N–1_wxXZfOThFrEcA0LjVP6wNOwidVTkLBzKlQVK6JvXYvVNhDWV9yF-NIOebtg1hwsnagsjUhOE2wxmiup20RRa#7

10、你们线上应用的 JVM 参数有哪些。

-server

Xms6000M

-Xmx6000M

-Xmn500M

-XX:PermSize=500M

-XX:MaxPermSize=500M

-XX:SurvivorRatio=65536

-XX:MaxTenuringThreshold=0

-Xnoclassgc

-XX:+DisableExplicitGC

-XX:+UseParNewGC

-XX:+UseConcMarkSweepGC

-XX:+UseCMSCompactAtFullCollection

-XX:CMSFullGCsBeforeCompaction=0

-XX:+CMSClassUnloadingEnabled

-XX:-CMSParallelRemarkEnabled

-XX:CMSInitiatingOccupancyFraction=90

-XX:SoftRefLRUPolicyMSPerMB=0

-XX:+PrintClassHistogram

-XX:+PrintGCDetails

-XX:+PrintGCTimeStamps

-XX:+PrintHeapAtGC

-Xloggc:log/gc.log

11、g1 cms 区别,吞吐量优先和响应优先的垃圾收集器选择。

Cms是以获取最短回收停顿时间为目标的收集器。基于标记-清除算法实现。比较占用cpu资源,切易造成碎片。

G1是面向服务端的垃圾收集器,是jdk9默认的收集器,基于标记-整理算法实现。可利用多核、多cpu,保留分代,实现可预测停顿,可控。

http://blog.csdn.net/linhu007/article/details/48897597 

请解释如下 jvm 参数的含义:

-server -Xms512m -Xmx512m -Xss1024K

-XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=20

XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly

Server模式启动

最小堆内存512m

最大512m

每个线程栈空间1m

永久代256

最大永久代256

最大转为老年代检查次数20

Cms回收开启时机:内存占用80%

命令JVM不基于运行时收集的数据来启动CMS垃圾收集周期

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值