Apr 23, 2006
JExcelAPI にチャレンジ(5)
JExcelAPI 実行時の GC を抑制する
どうやら JExcelAPI はガベージコレクションを強制的に実行するらしい。 ガベージコレクションにより CPU に負荷がかかりすぎる様であれば、下記の方法で抑制する。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
WorkbookSettings settings = new WorkbookSettings();
settings.setGCDisabled(true);
WritableWorkbook book = Workbook.createWorkbook(baos, settings);
ガベージコレクションの状況
実際に WorkbookSettings#setGCDisabled でどの程度ガベージコレクションの頻度が変わるのかチェックしてみた。 適当なブックを作成するサンプルコードを -verbose:gc 付きで実行してみた結果。 ガベージコレクションを抑制しないとかなり FULL GC が実行されていることが分かる。 サーバなどで JVM に大量のメモリを割り当てている環境では注意が必要になりそう。
-verbose:gc
| setGCDisabled(true) | setGCDisabled(false) |
[GC 512K->219K(1984K), 0.0037125 secs] [GC 731K->213K(1984K), 0.0013843 secs] [GC 725K->355K(1984K), 0.0025442 secs] [GC 485K->355K(1984K), 0.0008825 secs] [Full GC 355K->355K(1984K), 0.0185440 secs] [GC 5987K->5482K(7108K), 0.0007786 secs] [GC 5994K->5489K(7108K), 0.0010468 secs] [GC 6001K->5494K(7108K), 0.0008387 secs] [GC 6006K->5510K(7108K), 0.0014418 secs] [GC 5819K->5602K(7108K), 0.0015913 secs] [GC 5940K->5604K(7108K), 0.0007699 secs] [GC 6116K->5607K(7108K), 0.0007481 secs] [GC 6118K->5644K(7108K), 0.0021126 secs] [GC 5870K->5654K(7108K), 0.0005934 secs] [Full GC 5654K->460K(7108K), 0.0228395 secs] [GC 5946K->5605K(7108K), 0.0003456 secs] [GC 5946K->5606K(7108K), 0.0003162 secs] [GC 6116K->5649K(7108K), 0.0006051 secs] [GC 5685K->5653K(7108K), 0.0005341 secs] [Full GC 5653K->460K(7108K), 0.0227604 secs] [GC 5946K->5605K(6612K), 0.0003417 secs] [GC 5941K->5607K(6612K), 0.0002489 secs] [GC 6117K->5649K(6612K), 0.0004610 secs] [GC 5685K->5653K(6612K), 0.0005034 secs] [Full GC 5653K->454K(6612K), 0.0246984 secs] [GC 5940K->5600K(9932K), 0.0007546 secs] [GC 5939K->5601K(9932K), 0.0002735 secs] [GC 6111K->5644K(9932K), 0.0005029 secs] [GC 5682K->5647K(9932K), 0.0005302 secs] [Full GC 5647K->454K(9932K), 0.0233284 secs] [GC 5940K->5600K(7220K), 0.0003615 secs] [GC 5936K->5601K(7220K), 0.0002601 secs] [GC 6111K->5644K(7220K), 0.0007819 secs] [GC 5682K->5647K(7220K), 0.0005554 secs] [Full GC 5647K->454K(7220K), 0.0346614 secs] [GC 5939K->5600K(7220K), 0.0003635 secs] [GC 5938K->5601K(7220K), 0.0002766 secs] [GC 6111K->5644K(7220K), 0.0004685 secs] [GC 5682K->5647K(7220K), 0.0005615 secs] [Full GC 5647K->454K(7220K), 0.0334269 secs] [GC 5939K->5600K(7220K), 0.0003344 secs] [GC 5938K->5601K(7220K), 0.0002590 secs] [GC 6108K->5638K(7220K), 0.0005610 secs] [GC 5687K->5648K(7220K), 0.0005389 secs] [Full GC 5648K->455K(7220K), 0.0241341 secs] [GC 5941K->5601K(7220K), 0.0003498 secs] [GC 5938K->5602K(7220K), 0.0003266 secs] [GC 6109K->5638K(7220K), 0.0004643 secs] [GC 5688K->5649K(7220K), 0.0005397 secs] [Full GC 5649K->456K(7220K), 0.0234329 secs] [GC 5942K->5602K(7224K), 0.0008445 secs] [GC 5940K->5603K(7224K), 0.0002972 secs] [GC 6114K->5646K(7224K), 0.0004772 secs] [GC 5684K->5649K(7224K), 0.0005274 secs] [Full GC 5649K->457K(7224K), 0.0240489 secs] [GC 5942K->5602K(7228K), 0.0003386 secs] [GC 5938K->5604K(7228K), 0.0002643 secs] [GC 6113K->5646K(7228K), 0.0004836 secs] [GC 5684K->5650K(7228K), 0.0005246 secs] [Full GC 5650K->457K(7228K), 0.0248289 secs] [GC 5941K->5602K(7228K), 0.0003587 secs] [GC 5940K->5604K(7228K), 0.0002548 secs] [GC 6114K->5646K(7228K), 0.0004914 secs] [GC 5684K->5650K(7228K), 0.0005420 secs] [Full GC 5650K->456K(7228K), 0.0240072 secs] [GC 5940K->5602K(7224K), 0.0003609 secs] [GC 5939K->5603K(7224K), 0.0002562 secs] [GC 6113K->5645K(7224K), 0.0004696 secs] [GC 5683K->5649K(7224K), 0.0005280 secs] [Full GC 5649K->456K(7224K), 0.0239544 secs] [GC 5940K->5602K(7224K), 0.0003447 secs] [GC 5939K->5603K(7224K), 0.0002523 secs] [GC 6113K->5645K(7224K), 0.0004699 secs] [GC 5683K->5649K(7224K), 0.0005327 secs] [Full GC 5649K->456K(7224K), 0.0233776 secs] [GC 5940K->5602K(7224K), 0.0004629 secs] [GC 5939K->5603K(7224K), 0.0002674 secs] [GC 6113K->5645K(7224K), 0.0004660 secs] [GC 5683K->5649K(7224K), 0.0005395 secs] [Full GC 5649K->456K(7224K), 0.0236684 secs] [GC 5940K->5602K(7224K), 0.0003498 secs] [GC 5939K->5603K(7224K), 0.0002699 secs] [GC 6113K->5645K(7224K), 0.0004730 secs] |
[GC 512K->219K(1984K), 0.0030713 secs] [GC 731K->213K(1984K), 0.0013647 secs] [GC 725K->355K(1984K), 0.0024732 secs] [GC 485K->355K(1984K), 0.0009328 secs] [Full GC 355K->355K(1984K), 0.0186873 secs] [GC 5987K->5482K(7108K), 0.0014714 secs] [GC 5994K->5489K(7108K), 0.0010350 secs] [GC 6001K->5494K(7108K), 0.0008428 secs] [GC 6006K->5510K(7108K), 0.0013708 secs] [GC 5819K->5602K(7108K), 0.0016069 secs] [GC 5940K->5604K(7108K), 0.0007275 secs] [GC 6116K->5607K(7108K), 0.0007294 secs] [GC 6118K->5644K(7108K), 0.0020734 secs] [Full GC 5850K->5654K(7108K), 0.0233583 secs] [GC 5676K->5654K(10196K), 0.0002358 secs] [Full GC 5654K->460K(10196K), 0.0228359 secs] [GC 6284K->5606K(10196K), 0.0003883 secs] [Full GC 6142K->5619K(10196K), 0.0328980 secs] [GC 5639K->5620K(10196K), 0.0002173 secs] [Full GC 5620K->454K(10196K), 0.0228797 secs] [GC 6279K->5601K(10196K), 0.0004512 secs] [Full GC 6135K->5648K(10196K), 0.0234963 secs] [GC 5666K->5648K(10196K), 0.0002104 secs] [Full GC 5648K->454K(10196K), 0.0328841 secs] [GC 6274K->5601K(10196K), 0.0003517 secs] [Full GC 6135K->5619K(10196K), 0.0401814 secs] [GC 5637K->5620K(10196K), 0.0002282 secs] [Full GC 5620K->454K(10196K), 0.0338029 secs] [GC 6276K->5601K(10196K), 0.0003730 secs] [Full GC 6134K->5648K(10196K), 0.0235197 secs] [GC 5665K->5648K(10196K), 0.0002112 secs] [Full GC 5648K->454K(10196K), 0.0232991 secs] [GC 6275K->5601K(10196K), 0.0006495 secs] [Full GC 6135K->5619K(10196K), 0.0410946 secs] [GC 5637K->5620K(10196K), 0.0002313 secs] [Full GC 5620K->454K(10196K), 0.0235823 secs] [GC 6276K->5601K(10196K), 0.0003721 secs] [Full GC 6143K->5648K(10196K), 0.0371251 secs] [GC 5666K->5649K(10196K), 0.0002836 secs] [Full GC 5649K->455K(10196K), 0.0232323 secs] [GC 6278K->5602K(10196K), 0.0003699 secs] [Full GC 6142K->5621K(10196K), 0.0310796 secs] [GC 5638K->5621K(10196K), 0.0002299 secs] [Full GC 5621K->456K(10196K), 0.0236888 secs] [GC 6277K->5603K(10196K), 0.0005277 secs] [Full GC 6137K->5649K(10196K), 0.0237972 secs] [GC 5667K->5650K(10196K), 0.0002115 secs] [Full GC 5650K->456K(10196K), 0.0231585 secs] [GC 6276K->5603K(10196K), 0.0003615 secs] [Full GC 6135K->5621K(10196K), 0.0310106 secs] [GC 5638K->5621K(10196K), 0.0002330 secs] [Full GC 5621K->456K(10196K), 0.0243056 secs] [GC 6277K->5603K(10196K), 0.0003727 secs] [Full GC 6137K->5649K(10196K), 0.0243352 secs] [GC 5667K->5650K(10196K), 0.0002106 secs] [Full GC 5650K->456K(10196K), 0.0239634 secs] [GC 6276K->5603K(10196K), 0.0006238 secs] [Full GC 6135K->5621K(10196K), 0.0313233 secs] [GC 5638K->5621K(10196K), 0.0002310 secs] [Full GC 5621K->456K(10196K), 0.0241263 secs] [GC 6277K->5603K(10196K), 0.0003755 secs] [Full GC 6136K->5649K(10196K), 0.0241584 secs] [GC 5667K->5650K(10196K), 0.0002148 secs] [Full GC 5650K->456K(10196K), 0.0233303 secs] [GC 6276K->5603K(10196K), 0.0003743 secs] [Full GC 6136K->5621K(10196K), 0.0304924 secs] [GC 5638K->5621K(10196K), 0.0002355 secs] [Full GC 5621K->456K(10196K), 0.0235848 secs] [GC 6276K->5603K(10196K), 0.0005327 secs] [Full GC 6136K->5649K(10196K), 0.0246543 secs] |
-verbose:gc -Xmn16m
| setGCDisabled(true) | setGCDisabled(false) |
[GC 10740K->455K(16192K), 0.0067553 secs] [GC 13198K->455K(16192K), 0.0033887 secs] [GC 13310K->455K(16192K), 0.0031920 secs] [GC 13194K->455K(16192K), 0.0032965 secs] [GC 13188K->456K(16192K), 0.0032487 secs] [GC 13231K->456K(16192K), 0.0032934 secs] [GC 13218K->456K(16192K), 0.0033169 secs] |
[Full GC 10740K->5620K(16192K), 0.0376690 secs] [Full GC 12104K->5625K(16192K), 0.0320728 secs] [Full GC 12050K->5651K(16192K), 0.0320968 secs] [Full GC 12031K->5619K(16192K), 0.0346910 secs] [Full GC 11985K->5630K(16192K), 0.0324041 secs] [Full GC 12034K->5639K(16192K), 0.0324170 secs] [Full GC 12040K->5649K(16192K), 0.0326779 secs] [Full GC 12043K->5621K(16192K), 0.0340462 secs] [Full GC 11999K->5630K(16192K), 0.0329092 secs] [Full GC 11992K->5635K(16192K), 0.0330936 secs] [Full GC 12009K->5636K(16192K), 0.0325304 secs] [Full GC 11999K->5621K(16192K), 0.0325377 secs] [Full GC 11992K->5630K(16192K), 0.0431563 secs] [Full GC 12000K->5638K(16192K), 0.0337579 secs] [Full GC 12001K->5646K(16192K), 0.0353190 secs] |
TrackBack ping me at
http://www.in-vitro.jp/blog/index.cgi/Library/20060423_01.trackback
writeback message: Ready to post a comment.
