内存溢出解决办法

      

设置堆内存大小

    错误原因: java.lang.OutOfMemoryError: Java heap space

    解决办法:设置堆内存大小 -Xms1m -Xmx70m -XX:+HeapDumpOnOutOfMemoryError

    

      publicstaticvoid main(String[] args) throws InterruptedException {

      

List<Object> list = new ArrayList<>();

           Thread.sleep(3000);

           jvmInfo();

           for (inti = 0; i < 10; i++) {

                 System.out.println("i:"+i);

                 Byte [] bytes=   new Byte[1*1024*1024];

                 list.add(bytes);

                 jvmInfo();

           }

           System.out.println("添加成功...");

      }

 

 

设置栈内存大小

      

    错误原因: java.lang.StackOverflowError

    栈溢出 产生于递归调用,循环遍历是不会的,但是循环方法里面产生递归调用, 也会发生栈溢出。

    解决办法:设置线程最大调用深度

    -Xss5m 设置最大调用深度

    

publicclass JvmDemo04 {

       privatestaticintcount;

       publicstaticvoid count(){

           try {

                  count++;

                  count();

           } catch (Throwable e) {

                 System.out.println("最大深度:"+count);

                 e.printStackTrace();

           }

       }

       publicstaticvoid main(String[] args) {

            count();

      }

}

Tomcat内存溢出在catalina.sh 修改JVM堆内存大小
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m"

      

原文地址:https://www.cnblogs.com/zhouwen2017/p/9718494.html