OutOfMemoryError

  • OutOfMemoryError分两种:
  1. java.lang.OutOfMemoryError: Java heap space :堆内存的内存溢出,可通过配置-Xms和-Xmx参数来解决。
  1. java.lang.OutOfMemoryError: PermGen space : 非堆内存的内存溢出,可以通过配置-XX:PermSize和-XX:MaxPermSize来设置。
  • 字段解释:

    -vmargs:用来说明后面的就是JVM的参数了
    -Xms:JVM初始分配的堆内存
    -Xmx:JVM最大允许分配的堆内存,按需分配
    -XX:PermSize:JVM初始分配的非堆内存
    -XX:MaxPermSize:JVM最大允许分配的非堆内存,按需分配

  • 友情提示:

    1.-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,是无法用try...catch捕捉的。
    2.PermGen space用于存放Class和Meta的信息,GC不会对PermGen space进行处理,所以如果Load很多Class的话,就会出现上述Error。这种Error在web服务器对JSP进行pre compile的时候比较常见

  • OOM解决方案:

    1、查看系统是否有使用大内存的代码或死循环。
    2、提高堆内存和非堆内存配置(路径如:D:\android-studio\bin\studio64.exe.vmoptions)
    3、可以添加JVM的启动参数来限制使用内存:-XX:-UseGCOverheadLimit(网友推荐)

.

你可能感兴趣的:(OutOfMemoryError)