2011-07-21 12 views
4

.csvファイルからデータを読み込んでテーブルに表示するアプリケーションがあります。アプリケーションは、すべてのファイル(ウィンドウのサイズにかかわらず)に対して正しく動作しますが、Mac上では8MB未満のファイルでのみ動作します。それより大きいファイルは「java.lang.OutOfMemoryError:Javaヒープスペース "と呼ばれる。私はそれが.csvファイルを読み込んでいることを確認するためにアプリケーションをデバッグしましたが、しばらくしてから、そのエラーでクラッシュします。MacでJava OutOfMemory、Windowsで動作する

私はいくつかの調査を行い、-Xmxと-Xmsを使用してJavaヒープサイズを増やしても、同じエラーが発生します。

次のコードは、mainHashtableに情報を配列の一部を追加した後どこアプリケーションがクラッシュです:

while(reader.readRecord()){ 

     ArrayList<CSVEntry> list = new ArrayList<CSVEntry>(); 
     for(int i = 0; i < colscount; i++){ 
      CSVEntry entry = new CSVEntry(headerNames[i], reader.get(i)); 
      list.add(entry); 
     } 
     mainHashtable.put(recordcount, list); 
     recordcount++; 
} 

私はこの問題を解決するための任意の提案は喜んで理解されるであろう。

+0

どのようにアプリケーションを起動しますか?コマンドラインから? IDEから? – GarlicFries

+2

私は、Javaに特定のメモリ制限が許可されている何らかの設定のもので、その制限を増やすだけでよいことは間違いないと確信しています。 – Sam

+0

私はMacで実行するためにjarファイルを作成していますが、今はIDEからアプリケーションを起動してエラーを修正しようとしています。 –

答えて

4

-Xmxが正解です。 Javaには、プラットフォームに応じて最大のヒープスペースのための奇妙なデフォルトがあります(8MB程度の場合もあります)。

でアプリケーションがメインクラスINFディレクティブでJARにバンドルされている場合、次はあなたのために働く必要があります。

java -Xmx256m -jar myapp.jar

+1

あなたは間違った場所で-Xmxを使っていたようです。ありがとう –

+0

注文の問題: 'java -jar app.jar -Xmx200M'はLinux上で動作しますが、この順序でparamsを書くと' Xmx'はMacでは無視されます – lynxoid

1

[プロパティ]タブでアプリ
を生成するためにJavaを使用して、バンドラーVMオプションで、「-Xmx512m」を引用符なしで挿入します

関連する問題