3

コマンドの非常に大きな出力を読み取るために、clojure.java.shell コマンドの sh 関数を使用しています。出力は約 60 メガのデータです。

java.lang.OutOfMemoryError が発生し続けます。出力を読み取って vector に解析できるような一種のパイプを開く方法はありますか。コマンド出力の遅延シーケンスのようなものですか?

基本的に、データは、数値に変換してベクトルに入れたいバイトの大きな配列です。

4

1 に答える 1

4

clojure.java.shell/sh は常に非遅延文字列を返します

BufferedReader で lazy line-seq を使用するソリューション (クローズ、環境の受け渡し、およびエンコードを処理しません):

(->> (.exec (Runtime/getRuntime) "YOUR_LONG_RUNNING_COMMAND ARG ...")
    .getInputStream
    clojure.java.io/reader
    line-seq
    (map YOUR-FUNCTION))
于 2010-11-01T19:29:24.427 に答える