Java 多线程,导致内存溢出
private static ThreadPoolExecutor threadPoolExecutor=new ThreadPoolExecutor(20, 21, 1, TimeUnit.MINUTES,new ArrayBlockingQueue<Runnable>(20));
以这种方式 创建了 多个线程来执行数据‘导致内存溢出
回答:
你可以从这几个方面排查:
- 从你截图中看主要由Arrays.copyOf() 拷贝大量数组导致。
- 监控你线程池任务队列是否过长。
- 你的线程池核心数及最大数是否合理。
回答:
- 缩小数据集,或者用类似流式处理的思路,查一点算一点
- 增大内存
- 减少线程数
以上是 Java 多线程,导致内存溢出 的全部内容, 来源链接: utcz.com/p/944345.html