qianqiulan 2013-01-29 11:15
浏览 963
已采纳

JVM内存溢出问题:freeMemory还很大,为什么出现了OOM?

我使用java编写的一个应用程序,用于产生数据插入到HBase数据库中,但是程序在运行一段时间后就会产生OOM异常:
Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:640)
at java.util.concurrent.ThreadPoolExecutor.addIfUnderCorePoolSize(ThreadPoolExecutor.java:703)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:652)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:92)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1401)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchOfPuts(HConnectionManager.java:1499)
at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:859)
at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:715)
at org.apache.hadoop.hbase.client.HTable.put(HTable.java:693)
at storm.monitor.hbase.BasicOperation.addRecord(BasicOperation.java:135)
at storm.monitor.util.HBase_Operation.insertIntoHBase(HBase_Operation.java:75)
at storm.monitor.util.Data_Generator.insertIntoHBase(Data_Generator.java:215)
at storm.monitor.util.Data_Generator.run(Data_Generator.java:394)
at storm.monitor.util.Data_Generator.init(Data_Generator.java:68)
at storm.monitor.util.Data_Generator.(Data_Generator.java:41)
at storm.monitor.util.Main_Generator.main(Main_Generator.java:22)
可是我在类中获得Runtime,输出freeMemory,totalMemory如下free 505328288 total 528154624 max 1037959168
,明显的可用内存还有很多,怎么会出现上述异常呢?
在我的类中,方法多是静态方法,不过全局变量很少使用,一般都是创建的临时变量,并且是方法结束前都设为null。并且只有一个LinkedList全局对象和几个多维数组。
在eclipse中设置了(x)arguments -Xms512m -Xmx1024m。
到底是什么原因导致了OOM呢,整个应用程序中并没有创建线程的地方。
求解惑!

  • 写回答

4条回答 默认 最新

  • book_leobluewing 2013-01-29 12:17
    关注

    创建线程所用内存不是在jvm内存里的,jvm内存给的越大可创建线程数反而越小。

    所以优先看是不是程序问题,然后是在不行调大线程数量。。

    搜了一下相关: http://sesame.iteye.com/blog/622670

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站