一.情況
本次接到訂單導(dǎo)出的需求,訂單表數(shù)據(jù)量巨大,目前數(shù)據(jù)庫大約有幾十萬數(shù)據(jù)。導(dǎo)出時(shí)經(jīng)常內(nèi)存溢出,堆大小不夠用,指定-Xmx后決定監(jiān)控JVM內(nèi)存變化。
簡介:除了JDK自帶的jinfo jtsatus jmap等自帶監(jiān)控工具,visualVM是一款圖形化監(jiān)控JVM堆、類、線程、CPU的工具。
二.思路與實(shí)現(xiàn)
思路:調(diào)用導(dǎo)出訂單方法,實(shí)時(shí)監(jiān)控本機(jī)堆內(nèi)存變化。
實(shí)現(xiàn):導(dǎo)出17W訂單量,打開visualVM監(jiān)控堆內(nèi)存變化??梢钥吹紺PU使用率變化,以及GC發(fā)生時(shí)間點(diǎn)和堆內(nèi)存的變化,和消耗的堆峰值,消耗了大約800M內(nèi)存。

xiangfa1
導(dǎo)出90W訂單量消耗了大約3g內(nèi)存,必須優(yōu)化。查詢時(shí)間后看到使用的堆變大,因?yàn)榇藭r(shí)查詢對象映射為對應(yīng)的實(shí)體耗費(fèi)許多內(nèi)存,用的excel,生成許多大對象。

三.總結(jié)
優(yōu)化方案
1.使用CVS
2.分時(shí)間分量導(dǎo)出合成數(shù)據(jù)文件。