出现java.lang.OutOfMemoryError: Java heap space该错误或者是程序问题,或者被分配到JVM内存真的是不够的。

一般来说都是能够事前可控解决的。

可是假设不可控的情况。比如使用第三方包,或者系统抽筋,就会抛出OutOfMemoryError错误。

OH NO,依据不会抛出来,当前线程直接挂掉。

既然都挂掉了,谈什么恢复?并且挂掉也不仅仅是OutOfMemoryError的问题。

普通情况下,OutOfMemoryError在不可控的情况下。真的真的真的不须要处理,干脆无视好了。就当是运气好吧。

并且解决起来。程序逻辑非常难看。

假设你想较真,出现OutOfMemoryError时想死得好看一点,或者恢复起来优雅一点,那继续。

先了解OutOfMemoryError的一些特点:

1,不确定不可控性。相信可控的情况你已经攻克了。

2,不会抛出异常,也就是说try...catch不起作用。

3,出现后,当前线程就会挂掉。

4,对3点,假设在try...finally里发生OutOfMemoryError,则会运行finally语句再挂掉。但不要以为try...finally是万能的,什么情况都能得到运行。你用exit或者关机试试。

5,对3点,假设是多线程中的一个子线程(非守护),挂掉不影响其他线程。而且内存非常快(是非常快,就是非常快)能够回收。

所以在你确定会遇到OutOfMemoryError但无法解决的时候,try...finally是实用的,仅仅要不再做非常多内存的操作吧,想继续什么流程都没什么问题(我没遇到有问题的情况而已)。退出是必定的,finally里还是须要善后。记录状态等。还要记得用无关要紧的独立的线程去处理,最后通过守护程序,监控程序或者定时器又一次启动一个处理线程就是了。

====后记====

这几天用TIKA抽取文档内容并做索引。在抽取某个才40M(其他上百M以上的都没有问题)的文档时出现OutOfMemoryError,内存一下就用完了,加大到系统的上限也没用,照样完了,所以运行会停止。文档是不停地添加,并你要提取的索引的内容,为了保持该方案顺利运行,因此,上述探索。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

从[java.lang.OutOfMemoryError: Java heap space]恢复的更多相关文章

  1. java head space/ java.lang.OutOfMemoryError: Java heap space内存溢出

    上一篇JMX/JConsole调试本地还可以在centos6.5 服务器上进行监控有个问题端口只开放22那么设置的9998端口 你怎么都连不上怎么监控?(如果大神知道还望指点,个人见解) 线上项目出现 ...

  2. Tomcat报java.lang.OutOfMemoryError: Java heap space错误停止运行如何解决

    最近开发的一个商业项目,部署完成后,经常出现Tomcat挂掉的现象,报的异常是:java.lang.OutOfMemoryError: Java heap space,上网google了一下,了解了一 ...

  3. MyCAT报java.lang.OutOfMemoryError: Java heap space

    早上同事反映,mycat又假死了,估计还是内存溢出,查看了一下错误日志. INFO | jvm | // :: | java.lang.OutOfMemoryError: Java heap spac ...

  4. Tomcat 启动项目报错 java.lang.OutOfMemoryError: Java heap space

    近日使用myeclipse 部署web项目,启动tomcat时报错: SEVERE: Error waiting for multi-thread deployment of directories ...

  5. 应用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap space)

    http://www.educity.cn/wenda/351088.html 使用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap s ...

  6. java.lang.OutOfMemoryError: Java heap space

    java.lang.OutOfMemoryError: Java heap space 原因:内存溢出,内存一直申请一直占用,无法回收 解决方法:定时重启下服务,

  7. java.lang.OutOfMemoryError: Java heap space解决方法

    引起java.lang.OutOfMemoryError: Java heap space异常,可能是由JAVA的堆栈设置太小的原因 根据网上的答案大致有以下两种解决方法: 1.在D:/apache- ...

  8. 【转】java.lang.OutOfMemoryError: Java heap space的解决

    原文地址:http://blog.sina.com.cn/s/blog_4b12778b0100v0bb.html Myeclipse下java.lang.OutOfMemoryError: Java ...

  9. Hadoop执行作业时报错:java.lang.OutOfMemoryError: Java heap space

    常常被一些用户问到,说“为什么我的mapreduce作业总是运行到某个阶段就报出如下错误,然后失败呢?以前同一个作业没出现过的呀?” 10/01/10 12:48:01 INFO mapred.Job ...

随机推荐

  1. Windows 8实例教程系列 - 开篇

    原文:Windows 8实例教程系列 - 开篇 2012年10月26日,微软发布Windows 8操作系统以及自主品牌平板电脑Surface,Windows作为世界上最流行的操作系统,发布一周内,下载 ...

  2. Ant—Ant标签解释

            采用ant命令必须写ant命令脚本,脚本由非常多Ant标签组成.现在总结一下我也遇到过Ant标签: 版权声明:本文博主原创文章,博客,未经同意不得转载.

  3. 有关Struts2a的ction直接使用response异步问题

    假设我们在项目中使用struts2,正在使用ajax而通信时后端程序.为简单起见,我们经常使用下面的方法:         ActionContext ac = ActionContext.getCo ...

  4. ehCache浅谈(转)

    ehcache FAQ中提到 Remember that a value in a cache element is globally accessible from multiple threads ...

  5. 动态规划,而已! CodeForces 433B - Kuriyama Mirai's Stones

    Kuriyama Mirai has killed many monsters and got many (namely n) stones. She numbers the stones from  ...

  6. AndroidManifest:VersionCode和VersionName

    Google为APK定义了两个关于版本号属性:VersionCode和VersionName,他们有不同的用途. VersionCode:对消费者不可见.仅用于应用市场.程序内部识别版本号,推断新旧等 ...

  7. 013实现使用两个堆栈队列(keep it up)

    实现使用两个堆栈队列 FIFO队列是一种数据结构(FIFO),后堆叠前进出的数据结构的(FILO).  两个栈实现的最简单的方法就是排队:队列中的第一个推栈,  队列将数据顺序的第一个堆栈推入第二堆叠 ...

  8. NSIS:使用WinVer.nsh头文件判断操作系统版本

    原文 NSIS:使用WinVer.nsh头文件判断操作系统版本 AtLeastWin<version> 检测是否高于指定版本 IsWin<version> 检测指定版本(唯一限 ...

  9. 工厂模式IDAL具体解释

    IDAL 一. IDAL主要功能: 1.这全然是"工厂模式"的一部分实现而已 2.这是一组接口类,当中包含了每一个要公开的数据訪问方法.为每一个数据库产品单独编写的DAL(数据訪问 ...

  10. Android AIDL使用特定的解释

    1.什么是aidl:aidl这是 Android Interface definition language缩写,认清,这是android进程间通信接口的叙事语言描述.通过它我们可以定义进程间通信接口 ...