2011-01-18 9 views
4

この質問には裏づけが必要です。私の会社では、一連のPDFとHTMLファイルを作成しています。 A 非常に大きいが設定されています。現在のビルドプロセス(私が急いで設計したもの)は、一連のファイルを読み込むPerlスクリプトで、各ファイルには新しいantコマンドが含まれています。execはAnt OutOfMemoryの問題に適したプログラミングソリューションですか?

ひどく設計されています。

ここでは、大半のタスクでプロジェクト全体をantを使用して移動しようとしています。ターゲット内で、ビルドする必要のあるファイルのリストを、PDFまたはHTMLのいずれかとして作成できます。しかし、私がantコマンドを呼び出して各ファイルをビルドすると、約3回のビルド(例えば5回)の後、プロセス全体がOutOfMemoryエラーでクラッシュします。さらに、私のbuildlog.xmlは20メガのようなものになってしまいます。一つのターゲットから呼び出されているので、すべてのantコマンドの出力を一つの巨大なログに連結します。これまでのPerlソリューションでは、各antコマンドのbuildlog.xmlを取得できました。単にbuildlogを保存して別の名前に変更するだけでした。

私のuser.propertiesにantまたはjavaヒープサイズを設定しても、結局OOMで失敗します。 <exec>に電話して、私が記述したもののいくつかを実行するスクリプトを起動するかどうかは疑問です。つまり、antを呼び出し、buildlogの名前を変更し、理論的にスペースを1つの "巨大な"コール。私は、明確に定義されている問題に対して別の「ハッピー」な解決策を見出し、完全にantに限定することができると心配しています。その後、再び、<exec>が存在するので、それを使用することに悪くないでしょうか?

答えて

1

ほとんどの企業ソフトウェア(少なくとも期限があるものと、そうでないものは、私があなたが働く場所を教えてください)がそうであるように、最初のステップはそれを働かせることです。

の場合は、うまく動作することが心配です。

最初の手順では、どれほど醜いと思われるとしても、ツールを自由に使用できます。

しかし、あなたはそれが彼らのために働くためにあらゆる種類のクルージングをしなければならなかったことを知っていることを知りたいかもしれません。そうすれば、保守の前にそれをうまく修正することができますそれを開始する必要があります。おそらく、醜い醜いコードベースやデザインを維持したくないかもしれません。

私たちは夜間にメモリリークを避けるためにOSを残してアプリケーションを再起動させ、TCPソケットの反対側に「疑わしい」コードを入れてクラッシュすることはない主なアプリケーションをダウンさせず、私の脳がすべての痕跡を取り除くことを決めた他の多くの恐怖は確かです。