Quantcast
Channel: 質問!ITmedia 新着質問(Java/253)
Viewing all articles
Browse latest Browse all 2439

cloneNodeするとサイズが増える

$
0
0
データベースからXML文書のテンプレートを取得し、それを編集して出力するプログラムを作っています。 性能要件のため、「一度取得したXMLはメモリにキャッシュしておき、2回目以降はキャッシュされたXMLを再利用する」仕組みにしています。 public class Entity{ private Element XML; public Element getXML(){ return XML.cloneNode(); } public void setXML(Element XML){ this.XML = XML.cloneNode(); } } public class Dao{ public Element getXML(){ //DBにアクセスしてXML文書を取得する処理   return XML; } } public class Main(){ private Dao dao; public void outputXML(Entity entity){ Element XML = entity.getXML; if (entity == null){ XML = dao.getXML entity.setXML(XML) }   //以下XMLを編集して出力する処理 } } get時とset時にcloneNodeすることで、保存されたテンプレートは書き換えられない……という事を期待し、実際その処理はうまく行っていたのですが 動作させているうちにメモリリークが発生し、調査してみるとどうやらcloneNodeが実行されるたびに、EntityのフィールドのElementオブジェクトの容量が増加している様子… 一体なぜこのような現象が起きているのでしょうか? また、これを回避する方法はあるでしょうか。 javaのバージョンは1.6 データベースはOracle Databaseを使用しています よろしくおねがいします。

Viewing all articles
Browse latest Browse all 2439

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>