多くのサブ要素を含む大きなxmlファイルがあります。私はいくつかのxpathクエリを実行できるようにしたい。私はJavaでvtd-xmlを使ってみましたが、xmlがメモリに収まるほど大きいので、時々outofmemoryエラーが出ます。そのような大きなxmlを処理する別の方法がありますか?あなたが今やろうとしているどのような大きなファイル大きなxmlファイルの処理
答えて
は、XML文書のメモリー内表現を作成せずにサックスを使用してXPathを実行http://code.google.com/p/jlibs/wiki/XMLDog
を試してみてください。
は非常に効率的ですか?そのサウンドによって、DOMベースのパーサを使用しようとしています。パーサは、XMLファイル全体をDOM表現としてメモリにロードします。大きなファイルを扱う場合は、XML文書をストリーミング形式で処理するSAXパーサを使用する方がよいでしょう。
これは個人的にはStAXをお勧めします。
XPathをダイレクトSAXストリームで使用することはできません(クエリごとにファイル全体を再解析することはできません)。 –
@Glenn Maynard - 確かにOP *は各クエリ(またはクエリのバッチ)ごとにファイルを再解析する必要があります。 DOMは大きすぎてメモリに収まりません。 –
で作業するとき
標準vtdまたは拡張VTD-xmlを使用しましたか?拡張XMLを使用する場合は、メモリマッピングを使用するオプションがあります。これを試しましたか?
XPathを使用すると、長期間使用するアプリケーションで多くの式を動的にコンパイルすることはできません。
XPathのJavaバージョンがどのように機能するのかは完全にはわかりませんが、.NET XPathでは動的アセンブリをコンパイルしてアプリドメインに追加します。後で式を使用すると、アセンブリにメモリにロードされます。
XPathを使用していた状況では、この同じタイプのメカニズムがメモリリークと同様にメモリをいっぱいにしていました。
私の理論では、各式がユーザーの値を使用してコンパイルされるたびに、コンパイルされた各式は固有の可能性が高いため、新しい式がコンパイルされてアプリドメインに追加されました。
アプリケーションドメイン全体を再起動せずにアプリケーションドメインからアセンブリを削除することができるため、式が評価されるたびにメモリが消費され、回復できませんでした。その結果、コードはメモリ内のアセンブリの形でメモリをリークしていましたが、しばらくして結果が分かりました。
- 1. 大きなxmlドキュメントの処理
- 2. 大きなテキストファイルの処理
- 3. 処理大きな文書
- 4. xmlファイルの処理(Java)
- 5. タイププロバイダと大きなXMLファイル
- 6. ノードは大きなファイルを処理できません。
- 7. python - 大きなサイズのファイルを処理する際の問題
- 8. Java:入力ストリームの大きなファイルの処理
- 9. Pythonで大きなファイルを処理する最速の方法
- 10. 大きなHTMLファイルの印刷と処理を自動化
- 11. c#マルチスレッド処理100個のバッチファイルに大きなファイル行
- 12. Androidカメラアプリケーション - 大きなビットマップの処理
- 13. 大きなテキストファイルの自動処理
- 14. Twisted/Python - 大きなファイルを行単位で処理する
- 15. NSDataで大きなファイルを処理する方法は?
- 16. 大きなMXMLファイルを処理する方法
- 17. CFPropertyListで大きな.plistファイルを処理する
- 18. Javaで大きなファイルを処理する
- 19. 大きなファイルを処理するJavaヒープメモリエラー
- 20. Pythonで大きなcsvファイルを処理する
- 21. 大きなXLSXファイルをPythonで処理する
- 22. python - 非常に大きなファイル(> 90GB)を処理する
- 23. gaeで大きなファイルを処理する方法
- 24. 大きなファイルを処理するには
- 25. スパーク時に大きなファイルを処理する方法
- 26. の.xmlの大きなファイルのアップロードエラー - C#
- 27. PHP - 大きなデータを処理する
- 28. ニューラルネットワークで大きな数字処理
- 29. 大きなファイルのXML分割
- 30. 大きなファイルを処理しているときにjQueryのスロバキア
なぜこの質問にPythonタグがありますか?人々がPythonソリューションを提供することを望んでいますか? – Spaceghost
ドキュメントを解析するときやxpathクエリを実行するときにメモリ不足が発生しますか? 2番目の場合、おそらく問題はxpathクエリです。 いずれにせよ、JVMのヒープのために-Xmxの値を増やしてみましたか? – Spaceghost
拡張vtd-xmlを試して、メモリマッピングオプションを使用してください –