アプリ(Spring、JPA Hibernate、Sybase 12、Webapp)を起動時にローカルで実行すると、VisualVMに基づく256MBのヒープスペースのうち40MBが消費されます。70,000行以上(テキストデータにブロブなし)を返す検索をトリガーすると、ヒープスペースグラフは最大256MBになり、メモリが不足します。setMaxResults(limit)を使用してこれを解決しました。ただし、同じデータを照会し、テキストファイルにコピーして貼り付けてファイルシステムに保存すると、サイズはわずか26MBのテキストに相当することがわかります。
つまり、実際には、データベースから26MBのテキストをロードすることで216MB(256〜40)が消費されますが、メモリ不足が発生するまでに190MBを消費しているのは誰ですか?おそらくそれはフレームワークでしょうが、ロードされている実際のデータよりも多くを消費する方法がわかりません...
* * setMaxResults(limit)を使用してこれを解決したことに再度注意してください。私の質問は、教育目的で何をするかではなく、なぜかということです。