0

musicg ライブラリを使用してアプリケーションを開発しています。Eclipse でプログラムを実行すると、メモリ不足の例外が発生します。

以下はクラスです

public class FingerprintDemo{

    public static void main (String[] args){

        String filename = "Fun - Some Nights (ORIGINAL.wav";

        // create a wave object
        Wave wave = new Wave("D:\\DropBox\\Dropbox\\Convencion 2012\\AUDIOS WAV/"+filename);

        // get the fingerprint
        byte[] fingerprint=wave.getFingerprint();

        // dump the fingerprint
        FingerprintManager fingerprintManager=new FingerprintManager();
        fingerprintManager.saveFingerprintAsFile(fingerprint, "out/"+filename+".fingerprint");

        // load fingerprint from file
        byte[] loadedFp=fingerprintManager.getFingerprintFromFile("out/"+filename+".fingerprint");

        /*
        // fingerprint bytes checking
        for (int i=0; i<fingerprint.length; i++){
            System.out.println(fingerprint[i]+" vs "+loadedFp[i]);
        }
        */
    }
}

このプログラムを実行すると、以下の例外が発生します。

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at com.musicg.wave.extension.Spectrogram.buildSpectrogram(Spectrogram.java:117)
    at com.musicg.wave.extension.Spectrogram.<init>(Spectrogram.java:76)
    at com.musicg.wave.Wave.getSpectrogram(Wave.java:237)
    at com.musicg.fingerprint.FingerprintManager.extractFingerprint(FingerprintManager.java:83)
    at com.musicg.wave.Wave.getFingerprint(Wave.java:329)
    at com.musicg.main.demo.FingerprintDemo.main(FingerprintDemo.java:31)

クラスのjarを作成し、Launch4jで構成して実行しましたが、例外なく正常に動作しています。

<launch4jConfig>
  <dontWrapJar>false</dontWrapJar>
  <headerType>gui</headerType>
  <jar>D:\musicg\musicg.jar</jar>
  <outfile>D\musicg\\\musicg\.exe</outfile>
  <errTitle>MusicG</errTitle>
  <cmdLine></cmdLine>
  <chdir></chdir>
  <priority>normal</priority>
  <downloadUrl>http://java.com/download</downloadUrl>
  <supportUrl></supportUrl>
  <customProcName>true</customProcName>
  <stayAlive>false</stayAlive>
  <manifest></manifest>
  <icon></icon>
  <jre>
    <path>C:\Program Files\Java\jre7\</path>
    <minVersion>1.4.0</minVersion>
    <maxVersion></maxVersion>
    <jdkPreference>preferJre</jdkPreference>
    <initialHeapSize>512</initialHeapSize>
    <maxHeapSize>512</maxHeapSize>
  </jre>
</launch4jConfig>

この例外を取り除く方法、または Eclipse で launch4j を構成し、実行するプログラムを呼び出す方法は?

4

1 に答える 1

0

実行構成で最大ヒープ サイズを増やしていないため、Eclipse で OutOfMemoryError が発生しています。ただし、Launch4J スクリプトでは、それを増やしました。<maxHeapSize>512</maxHeapSize>

Eclipse で問題を解決するには、[実行構成] ダイアログを開きます。[引数] タブに切り替えて、Xmx (最大ヒープ サイズ) 引数を入力します。

ここに画像の説明を入力

Eclipse から Launch4J スクリプトを実行するのは適切ではありません。実行構成を使用してください。Launch4J を実行して .exe をビルドする Ant スクリプトを作成することはできますが。

于 2013-04-19T18:40:08.803 に答える