Java初级程序员面试总结(一)--JVM篇

Java初级程序员面试总结(一)

引言:
我是一个菜鸟程序员,坐标HZ,最近在准备面试,所以想写点博客进行总结.
Q1: JVM你了解么?
Answer: JVM分为5个区:栈,堆,方法区,本地方法区,程序计数器.在JDK1.8时,堆的永久代被转移到元数据空间了.在栈区可以存放线程的栈帧,在堆区存放new的对象,又分成新生代,老年代,永久代.在方法区存放了常量,字节码文件等.在本地方法区存放除java外的其他语言文件,如c/c++.程序计数器是记录每条程序的执行顺序的.堆和方法区为共享区,其他为私有区.
Q2: JVM调优你会吗?
Answer: JVM可以设置Xmx最大堆内存,Xms初始堆内存,可以设置新生代和老年代的比例,Eden和Survivor的比例,选择相应的垃圾回收器如G1,CMS+ParNew,并行回收器组合等.
Q3: G1回收器你了解吗?
Answer: G1采用逻辑分区,新增H区,让创建的超大临时变量直接进入H区,不再在进入Old区避免了频繁调用full GC.采用Rset方式,将分区分成多个Card,每个Card516KB,进行相互的引用,加快了存活对象的查找效率.垃圾回收流程为初始标记STW,区域扫描,并发标记,最终标记STW,清除垃圾STW.
Q4: tomcat调优你会吗?
Answer: tomcat调优可以关闭AJP协议,因为现在用的都是nginx.可以设置线程池参数,比如KeepAlive,最大/核心线程数,工作队列.进行JVM调优.优化连接器,缓存优化,设置模式为NIO


以上为比较基础的常见问题.
JVM操作工具:VisualVM+MAT(dump堆内存文件,可查看对象的内存占用情况,依赖关系等信息),Jstatck(跟踪堆栈信息),JConsole(监控工具)
以上工具可以在jdk/bin中找到

发布了3 篇原创文章 · 获赞 4 · 访问量 75

猜你喜欢

转载自blog.csdn.net/qq_21010115/article/details/104878754