登陆

极彩在线平台-JVM 中发作内存溢出的 8 种原因及解决办法

admin 2020-02-14 162人围观 ,发现0个评论


欢迎重视头条号:Java小野猫

1. Java 堆空间

发作频率:5颗星

形成原因

  • 无法在 Java 堆平分配目标
  • 吞吐量添加
  • 运用程序无意中保存了目标引证,目标无法被 GC 收回
  • 运用程序过度运用 finalizer。finalizer 目标不能被 GC 马上收回。finalizer 由完毕行列服务的看护线程调用,有时 finalizer 线程的处理才能无法跟上完毕行列的添加

处理方案

  • 运用 -Xmx 添加堆巨细
  • 修正运用程序中的内存走漏

2. GC 开支超极彩在线平台-JVM 中发作内存溢出的 8 种原因及解决办法越约束

发作频率:5颗星

形成原因

  • Java 进程98%的时刻在进行废物收回,康复了不到2%的堆空间,最终接连5个(编译时常量)废物收回一向如此。

处理方案

  • 运用 -Xmx 添加堆巨细
  • 运用 -XX:-UseGCOverheadLimit 撤销 GC 开支约束
  • 修正运用程序中的内存走漏

3. 恳求的数组巨细超越虚拟机约束

发作频率:2颗星

形成原因

  • 运用程序企图分配一个超越堆巨细的数组

处理方案

  • 运用 -Xmx 添加堆巨细
  • 修正运用程序平分配巨大数组的 bug

4. Perm gen 空间

发作频率:3颗星

形成原因

Perm gen 空间包括:

  • 类的姓名、字段、办法
  • 与类相关的目标数组和类型数组
  • JIT 编译器优化

当 Perm gen 空间竭尽时,将抛出反常。

处理方案

  • 运用 -XX: MaxPermSize 添加 Permgen 巨细
  • 不重启运用布置运用程序可能会导致此问题。重启 JVM 处理

5. Metaspace

发作频率:3颗星

形成原因

  • 从 Java 8 开端 Perm gen 改成了 Metaspace,在本机内存平分配 class 元数据(称为 metaspace)。假如 metaspace 耗尽,则抛出反常

处理方案

  • 经过命令行设置 -XX: MaxMetaSpaceSize 添加 metaspace 巨细
  • 撤销 -XX: maxmetsspacedize
  • 减小 Java 堆巨细,为 MetaSpace 供给更多的可用空间
  • 为服务器分配更多的内存
  • 可能是运用程序 bug,修正 bug

6. 无法新建本机线程

发作频率:5颗星

形成原因

  • 内存缺乏,无法创立新线程。因为线程在本机内存中创立,陈述这个过错极彩在线平台-JVM 中发作内存溢出的 8 种原因及解决办法标明本机内存空间缺乏

处理方案

  • 为机器分配更多的内存
  • 削减 Java 堆空间
  • 修正运用程序中的线程走漏。
  • 添加操作系统等级的约束
  1. - ulimit -a
  • 用户进程数增大 (-u) 1800
  • 运用 -Xss 减小线程仓库巨细

7. 杀死进程或子进程

发作频率:1颗星

形成原因

  • 内核使命:内存缺乏完毕器,在可用内存极低的情况下会杀死进程

处理方案

  • 将进程迁移到不同的机器上
  • 给机器添加更多内存

与其他 OOM 过错不同,这是由操作系统而非 JVM 触发的。

8. 发作 stack_trace_with_native_method

发作频率:1颗星

形成原因

  • 本机办法(native meth维生素c片od)分配失利
  • 打印的仓库盯梢信息,最顶层的帧是本机办法

处理方案

  • 运用操作系统本地东西进行确诊

欢迎做Java的朋极彩在线平台-JVM 中发作内存溢出的 8 种原因及解决办法友们私信我【材料】免费获取免费的Java架构学习材料(里边有高可用、高并发、高功能及分布式、Jvm功能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构材料)

其间覆盖了互联网的方方面面,期间碰到各种产品各种场景下的各种问题,很值得我们学习和学习,扩展自己的技能广度和知识面。

请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP