`
jamaica1982
  • 浏览: 29759 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于java.lang.OutOfMemoryError的一例

 
阅读更多
首先是昨天在基于InsECTJ做profiling,然后发现绝大多数的test case都fail了,与此同时产生的trace文件的大小都是37,336,474字节(内含7,634,068行,每行一个字符),觉得比较奇怪:
一方面,这一组test case应该只有2个fail,其它全部pass。另一方面,当然是所有fail的trace文件都是同样的大小。

今天回来大概看了一下代码,发现是一个比较低级的bug造成的:用于存放当前test case的trace的ArrayList没清空。于是改了改代码,再运行,发现绝大多数trace看上去都是正确的,但是还是有一个test case本应该是pass,而它却仍然fail,并且trace文件大小还是37,336,474字节。

于是乎...,各种猥琐的猜测涌上心头,比如ArrayList有没有长度限制之类。后来大概Google了一下,发现可能是因为-Xmx设置得太小,在运行的时候out of memory了。于是在test case的listener里面加了点打印语句,发现果然如此。(囧...)

之前没发现这个Error,可能是因为程序是通过ant和JUnit的test runner来运行的,导致Error的stack trace没有被打印出来(具体被弄到哪里去了,暂时没空去琢磨了 )。在这里就暂时记录一下吧,以备后用
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics