Exception in thread "main" java.lang.OutOfMemoryError: Java heap space这个异常怎么捕获他?
就是说catch()哪个异常,才能捕获该异常?我试过Exception,也试过ioexception,似乎都不行

解决方案 »

  1.   

    无法捕获了,这个错误表示 VM 内存耗尽,JVM 所能管理的内存中仅剩下产生 OutOfMemoryError 对象的一点点内存了。这个错误一般是由一些不好的编程方式造成的,可能会发生在以下方面:1:读取文件,测试时使用少量数据的文件,并将其全部读入到 byte[]、List 中,由于数量小不会造成什么问题,但是数量一大问题马上就出现了
    2:读取数据表:测试时也是使用少量的数据记录,并没有采用数据分页机制,而是将整表读到 List 中
    3:如果实在是需要把大量的数据全部读入内存的话,只能扩充 JVM 所能管理的内存,在 java 命令行后增加 -Xmx 1024m 或者更多,对于 32 位操作系统上的 32 位版本的 JVM 来说,这个值最大在 1400m 到 1600m 左右,如果还需要扩大,需要安装 64 位操作系统,并且安装 64 位版本的 JVM
      

  2.   

    我知道内存溢出的原因是什么,但是我想问的是,这种情况可以catch捕获吗?
      

  3.   

    内存溢出这种情况是不能捕获的!在有些公司的笔试题目中,会问到error和exception的区别。你现在遇到的这种情况就属于error,error表示不是不可能捕获,而是很难,不可能指望程序员来实现。