JVM性能调优是一个很大的话题,很多中小企业的业务规模受限,没有迫切的性能调优需求,但是如果不知道JVM相关的理论知识,写出来的代码或者配置的JVM参数不合理时,就会出现很严重的性能问题,到时候开发就会像热锅上的蚂蚁,等待各方的炙烤。今天小编总结了一些相关的面试题,一是希望能够应对性能调优岗位相关的面试;二是希望总结一下具体的实战步骤,并努力吸收书中的实践案例,让自己的经验更丰富一些。
JVM性能调优
内存溢出错误
学习目的:
通过异常信息及时定位到发生内存溢出的运行时数据区域
了解什么样的代码会导致内存溢出,防止写出这样的代码
出现异常后该如何处理,也就是学习事中的处理手段
内存溢出和内存泄露的区别
内存泄露:不该留存在进程中的内存数据,虽然很小,但是在经过多次长期的积累后,会导致内存溢出
内存溢出:程序申请内存时,内存不足的现象
堆溢出错误和预判堆溢出的错误
如何复现出堆溢出错误?
JVM参数部分:最大堆和最小堆设置相同并且设置的比较小,比如只有10M,这样就不会自动扩展堆
代码部分:在一个方法中不断地往集合中加入元素
代码实践
package org.example;
import java.util.ArrayList;
import java.util.List;
/**
* -Xmx10M -Xms10M -XX:+HeapDumpOnOutOfMemoryError
*/
public class App {
static class OOMObject {
int a = 1;
long b = 2;
f