Java 多线程,导致内存溢出

private static ThreadPoolExecutor threadPoolExecutor=new ThreadPoolExecutor(20, 21, 1, TimeUnit.MINUTES,new ArrayBlockingQueue<Runnable>(20));

以这种方式 创建了 多个线程来执行数据‘导致内存溢出
image.png

阅读 2.2k
2 个回答

你可以从这几个方面排查:

  1. 从你截图中看主要由Arrays.copyOf() 拷贝大量数组导致。
  2. 监控你线程池任务队列是否过长。
  3. 你的线程池核心数及最大数是否合理。
  1. 缩小数据集,或者用类似流式处理的思路,查一点算一点
  2. 增大内存
  3. 减少线程数
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题