JVM手动调优的完整过程(包含cpu飙升、OOM问题定位等详细步骤)一

一、前置知识补充(关于线程池的使用,熟悉的同学可以直接跳过本节)

1、线程池的创建和使用:

阿里最新开发手册关于并发创建线程池时有如下强制规定:

线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。
说明:Executors返回的线程池对象的弊端如下:
1) FixedThreadPool和SingleThreadPool: 允许的请求队列长度为Integer.MAX_VALUE,可能会堆积大量的请求,从而导致OOM。
2) CachedThreadPool: 允许的创建线程数量为Integer.MAX_VALUE,可能会创建大量的线程,从而导致OOM。

因此我们需要从根本上避免因代码不规范而产生的OOM!

下面我们介绍如何正确的使用线程池!
使用来创建线程池,其构造函数如下(7个参数最全的那个构造方法):

public ThreadPoolExecutor(int corePoolSize,
                              

你可能感兴趣的:(jvm调优,线上问题查找)