利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题
2009-12-24 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劎绮妵鍕箳鐎n亞浠鹃梺闈涙搐鐎氫即鐛崶顒夋晬婵絾瀵ч幑鍥蓟閻斿摜鐟归柛顭戝枛椤牆顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秵妫冮崺鈧い鎺戝瀹撲礁鈹戦悩鎻掝伀缁惧彞绮欓弻娑氫沪閹规劕顥濋梺閫炲苯澧伴柟铏崌閿濈偛鈹戠€n€晠鏌嶆潪鎷屽厡闁汇倕鎳愮槐鎾存媴閸撴彃鍓卞銈嗗灦閻熲晛鐣烽妷褉鍋撻敐搴℃灍闁绘挻娲橀妵鍕箛闂堟稐绨肩紓浣藉煐濮樸劎妲愰幘璇茬闁冲搫鍊婚ˇ鏉库攽椤旂》宸ユい顓炲槻閻g兘骞掗幋鏃€鐎婚梺瑙勬儗閸樺€熲叺婵犵數濮烽弫鍛婃叏椤撱垹纾婚柟鍓х帛閳锋垶銇勯幒鍡椾壕缂備礁顦遍弫濠氱嵁閸℃稒鍊烽柛婵嗗椤旀劕鈹戦悜鍥╃У闁告挻鐟︽穱濠囨嚃閳哄啰锛滈梺褰掑亰閸欏骸鈻撳⿰鍫熺厸閻忕偟纭堕崑鎾诲箛娴e憡鍊梺纭呭亹鐞涖儵鍩€椤掑啫鐨洪柡浣圭墪閳规垿鎮欓弶鎴犱桓闂佸湱枪閹芥粎鍒掗弮鍫熷仺缂佸顕抽敃鍌涚厱闁哄洢鍔岄悘鐘绘煕閹般劌浜惧┑锛勫亼閸婃牠宕濋敃鈧…鍧楀焵椤掍胶绠剧€光偓婵犱線鍋楀┑顔硷龚濞咃絿妲愰幒鎳崇喓鎷犻懠鑸垫毐闂傚倷鑳舵灙婵炲鍏樺顐ゆ嫚瀹割喖娈ㄦ繝鐢靛У绾板秹寮查幓鎺濈唵閻犺櫣灏ㄥ銉р偓瑙勬尭濡繂顫忛搹鍦<婵☆垰鎼~宥囩磽娴i鍔嶉柟绋垮暱閻g兘骞嬮敃鈧粻濠氭偣閸パ冪骇鐎规挸绉撮—鍐Χ閸℃ê闉嶇紓浣割儐閸ㄥ墎绮嬪澶嬪€锋い鎺嶇瀵灝鈹戦埥鍡楃仯闁告鍕洸濡わ絽鍟崐鍨叏濡厧浜鹃悗姘炬嫹

核心提示: 顶级泄漏疑点十分重要,您应点击表上方的链接,利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题(8),查看其内容示意图,随后查看表中列举的泄漏疑点,图 7 显示了按实例数量降序排列的表,图 7. 按实例数量排序的对象表查看原图(大图)数据结构D
顶级泄漏疑点十分重要,您应点击表上方的链接,查看其内容示意图。随后查看表中列举的泄漏疑点,识别哪些类只是容器,哪些类是泄漏类。为此,您需要了解为其生成堆转储的应用程序的结构或实现。请牢记,列为泄漏类的类本身可能并不是导致泄漏的原因。更有可能是其他用于创建类实例的代码导致了过度的内存占用。
识别出泄漏类后,您要检查 Data Structures 视图,确认泄漏根或泄漏单元占用了多少堆。如果 Data Structures 视图中未列出任一项内容,则泄漏并非真正的泄漏,此时应审查 Data Structures 视图中提供的占用堆比例最大的因素。(Data Structures 视图将在稍后详细介绍)。
对象表
Object Tables 视图包含两个子视图,列举了堆中的所有类和各类的实例。利用 Object Tables 选项卡中的视图可获得更多信息,包括堆中指定对象和类的数量,或确认泄漏疑点的大小。
两个表中的数据均可按列排序,只需点击列标题即可。再次点击列即可切换排序的次序。图 7 显示了按实例数量降序排列的表。
图 7. 按实例数量排序的对象表
查看原图(大图)
数据结构
Data Structures 视图(如图 8 所示)提供了关于应用程序数据结构的内部结构的更多细节。包含在此视图内的显示基于由 IBM Research 团队开发的 Yeti 技术。
图 8. Data Structures 视图
更多精彩
赞助商链接