zoukankan      html  css  js  c++  java
  • JVM 内存溢出

    1,Java堆溢出

       错误原因: java.lang.OutOfMemoryError: Java heap space 堆内存溢出

      模拟:-Xms1m -Xmx10m -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError

      设置堆初始内存1M 最大内存10M ,创建数组Byte[] bytes = new Byte[11 * 1024 * 1024],便会出现java heap space out of memory

      解决方法:调整堆的大小

    2,虚拟机栈溢出

    java.lang.StackOverflowError 栈内存溢出

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

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

    -Xss5m 设置最大调用深度

    1M 约10000左右的深度,但是-Xss 越大,深度会成指数增长

    public class JvmDemo {
         private static int count;
         public static void count(){
            try {
                 count++;
                 count(); 
            } catch (Throwable e) {
                System.out.println("最大深度:"+count); //递归调用的的一个深度
                e.printStackTrace();
            }
         }
         public static void main(String[] args) {
             count();
        }
    }

    3,Java 内存溢出和内存泄漏区别

    Java 内存溢出是指:要求分配的内存超出了系统所能提供的内存,系统无法满足要求,于是内存溢出

    内存泄露是指:使用过的内存空间没有被及时的释放,长时间占用内存,最终导致内存空间不足,而产生内存溢出。所以IO流用完要关闭,static 不要用太多,因为不会被释放

  • 相关阅读:
    unzip详解,Linux系统如何解压缩zip文件?
    什么是FHS,Linux的文件系统目录标准是怎样的
    第三篇:Linux的基本操作与文件管理(纯命令行模式下)(上)
    什么是YUM
    KineticJS教程(12)
    KineticJS教程(11)
    KineticJS教程(10)
    KineticJS教程(9)
    KineticJS教程(8)
    KineticJS教程(7)
  • 原文地址:https://www.cnblogs.com/pickKnow/p/11123018.html
Copyright © 2011-2022 走看看