我使用java編寫的一個(gè)應(yīng)用程序,用于產(chǎn)生數(shù)據(jù)插入到HBase數(shù)據(jù)庫中,但是程序在運(yùn)行一段時(shí)間后就會(huì)產(chǎn)生OOM異常:Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native threadat 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,明顯的可用內(nèi)存還有很多,怎么會(huì)出現(xiàn)上述異常呢?在我的類中,方法多是靜態(tài)方法,不過全局變量很少使用,一般都是創(chuàng)建的臨時(shí)變量,并且是方法結(jié)束前都設(shè)為null。并且只有一個(gè)LinkedList全局對象和幾個(gè)多維數(shù)組。在eclipse中設(shè)置了(x)arguments -Xms512m -Xmx1024m。到底是什么原因?qū)е铝薕OM呢,整個(gè)應(yīng)用程序中并沒有創(chuàng)建線程的地方。求解惑!
4 回答

揚(yáng)帆大魚
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
線程創(chuàng)建的內(nèi)存空間占用的是本地文件棧,通過-Xss參數(shù)加大本地方法棧大小。
添加回答
舉報(bào)
0/150
提交
取消