0

いくつかのデータを含むテキスト ファイルがあります。MySQL にデータを入れようとすると、このエラー " java.lang.OutOfMemoryError: Java heap space" が発生します。

私のコード:

        try {
        // create a buffer reader
        java.io.BufferedReader br = new BufferedReader(new FileReader(f));
        // define line
        String line = null;
        // connect to the database
        connect = (Connection) DbConnection.establishConnection();
        while ((line = br.readLine()) != null) {
            // create preparedStatement
            preparedStatement = (PreparedStatement) connect.prepareStatement("insert into  IdentifiedExpertList values (?,?)");

            String[] rowData = line.split("\\s+", 2);
            String firstColumnData = rowData[0];
            String secondColumnData = null;
            if (rowData[1].trim().isEmpty()) {
                secondColumnData = null;
            } else {
                secondColumnData = rowData[1];
            }

            preparedStatement.setString(1, firstColumnData.trim());
            preparedStatement.setString(2, secondColumnData);
            preparedStatement.executeUpdate(); 

        }
        br.close();
        }
4

1 に答える 1

4
java.lang.OutOfMemoryError: Java heap space

JVM に割り当てられたメモリが、ファイルをメモリにロードするために必要なメモリに追いつくのに十分でないことを示します。

-Xmsおよびフラグを使用し-Xmxて、JVM にメモリを割り当てることができます。使用されているメモリが非常に少ない場合は、これらのフラグを使用してメモリを増やして確認してください。

それでもメモリの問題がある場合は、ファイル全体を一度に読み取るのではなく、ファイルのチャンクを読み取って DB にアップロードする別の解決策が考えられます。

いずれも機能しない場合は、コードにメモリ リークが発生している可能性があります。修正する必要があります。

于 2012-09-10T21:28:16.320 に答える