java.lang.OutOfMemoryError: Java heap space
在java程序运行中可能会报如上的错误,通常是在运行过程中内存占用了没有别释放造成的。
以前可能没法跟踪可能是很痛苦的事情,现在好了,我们有一个调试软件可以用了,在生产环境下使用的jRockit软件进行调试,是oracle公司出品的。
前两天试用了一下真的很不错。
前阵子有个程序跑2个礼拜左右就会堆栈溢出,始终找不到头绪,后来使用jrockit才找到问题的出处。
jrockit是可以调试远程程序也可以调试本地程序的。
具体调试步骤
(一)
如果是调试本地程序的话,启动jrockit,然后启动本地需要调试的程序,会在左侧工具栏 本地目录下创建一个连接为需要调试的程序,在上面点击右键,就会启动跟踪。
如何跟踪呢,我的办法就是等,在跟踪开始后,进行截图,然后等程序运行一段时间后查找堆增长比较大的并且一直没有释放的变量。
(二)
然后在上面点击右键,显示分配跟踪。
(三)
然后找到对应的方法,然后就去找问题吧,看看是不是那个地方有内存一直没有释放啊。
然后说点我自己的小经验,也许是不对的,但是我在我的应用里面确实是有效的。
在经常需要调用的地方将变量设成全局的甚至是静态的,我的操作是设成全局的了。图省事呢。呵呵,因为我的变量时全局都要调用的而且是频繁调用的。
用完的变量一定要记得让它等于null,否则执行gc()貌似是不给回收的。
基本上jrockit跟踪是很强的,都能够找到你的问题所在,要仔细观察,改完程序后记得再重新跟踪下直到没有内存泄露为止。
写完手工。
题外话,写多线程的时候建议使用线程池来操作。
分享到:
相关推荐
unix linux 堆栈 溢出 的 问题
JAVA内存溢出详解.docJAVA内存溢出详解.docJAVA内存溢出详解.docJAVA内存溢出详解.docJAVA内存溢出详解.docJAVA内存溢出详解.docJAVA内存溢出详解.docJAVA内存溢出详解.docJAVA内存溢出详解.docJAVA内存溢出详解.doc
堆和栈是两个不同的概念 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个...虽然堆栈,堆栈的说法是连起来叫,但是他们还是有很大区别的,连着叫只是由于历史的原因。
java内存泄露、溢出检查方法和工具。 步骤: 1,使用linux命令生存堆栈文件 2,用MemoryAnalyzer.exe工具打开 3,根据工具生成的饼状图可以清晰的找出内存泄漏源
堆栈溢出1
连接到我的堆栈溢出问题 - 这个项目是在 android 上测试 espresso。 没有“哈克”我就无法让它工作 为了使它工作,我必须注释这段代码: Espresso . onView( ViewMatchers . withId( R . id . email)) . perform( ...
stackoverflow-1134894 堆栈溢出问题“Maven2:企业项目的最佳实践(EAR 文件)”
【IT十八掌徐培成】Java基础第04天-04.OOP-堆栈的溢出与设置-private关键字.zip
当“最新的'java'问题-堆栈溢出”页面上出现新的问题时,此插件将通知您。它还会播放小声音。 例如,您正在看书,而无需每次都查看是否有新问题,因为如果有任何新问题,此插件将通知您。 目前仅适用于Windows操作...
最近因项目开发的需要,整理了一份用JAVA导出WORD文档,其部署步骤如下: 1、将jacob-1.14.3-x86.dll放在服务器的系统盘(或运行本机的系统):\WINDOWS\system32目录下。 2、将jacob-1.14.3-x86.dll放在JDK 的 bin ...
Java heap space 解决方法,解决tomcat堆栈溢出问题.
递归遍历指定目录所有的文件优化版本,自测无堆栈溢出,可直接拿来使用,如有问题,联系我
堆栈溢出好友 一个有用的终端应用程序,用于搜索堆栈溢出 这是什么? 这是一个Java Shell应用程序,可以轻松快速地从Stack Overflow获得答案。 它是从头开始设计的,因此我可以提高测试驱动开发(TDD),Java设计...
Scoold-JAR中的堆栈溢出 Scoold是一个用Java编写的问答基础知识平台。 该项目创建于2008年,2012年作为受Stack Overflow启发的学校社交网络发布。 在2017年,它进行了重构,重新包装和开源。 Scoold可以在任何地方...
内存溢出与数据库锁表的问题,可以说是开发人员的噩梦,一般的程序异常,总是可以知道在什么时候或是在什么操作步骤上出现了异常,而且根据堆栈信息也很容易定位到程序中是某处出现了问题。内存溢出与锁表则不然,...
飞机游戏java源码 问:如何在 vim 模式下启用 Sublime 3? {崇高} {vi} 在用户设置中,将 "ignored_packages": ["Vintage"] 更改为 ignore_packages": [] 问:Mac 上的 Sublime 不允许重复按键。 如何解决这个...
stackoverflow-28379562 堆栈溢出问题“@New 注释不起作用”
Belisarius-检测堆栈溢出时的故意破坏 背景 开发该机器人的目的是帮助捕获可能的破坏行为。 这包括: 删除所有代码 用废话代替所有内容 用重复的单词替换所有内容 为他们的问题添加解决方案,而不是发布答案 从他们...
34.java.lang.StackOverflowError 堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。 35.java.lang.ThreadDeath 线程结束。当调用Thread类的stop方法时抛出该错误,用于指示线程结束。 36....
jca java dump分析工具,检测java 内存溢出,检测java 堆栈资源分析