快速业务通道

关注性能: 边缘剖析 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

关注性能: 边缘剖析

时间:2011-08-13 IBM Jack Shirazi

简介:调优的并不总是速度,有时候需要调整应用程序的其他方面,如果应用程序需要调优,要做的 第一件事通常是使用剖析程序监控应用程序。但是,剖析并不总是可行的,有时候原因可能很可笑。关注 性能的本期文章中, Jack 和 Kirk 讲述了他们最近经历的一件事:他们奉命剖析一个胖客户机,事实上 它是如此庞大,根本没有为剖析程序留下空间。

我们从来还没有遇到过调优应用程序内存占用的问题。通常,我们看到的和内存有关的调优要求都涉 及到降低垃圾收集的开销,理想情况下可以通过调整堆的大小或者改变垃圾收集算法来解决,如果不行的 话,还可以采用各种技术减少内存中的对象。但是,有时候无论分配和垃圾收集的效率如何,应用程序都 要占用很多的内存。

减肥中心之旅

最近,我们奉命降低一个胖客户机的内存占用。虽然“胖客户机”一词通常表示普通的 GUI 客户应用 程序,而这个客户机却是几近肥胖症。这个客户机在 Windows 平台上运行,处理大小的极限是 2 GB。去 掉可执行地址空间和引入各种 JNI 产品所需要的其他空间之后,该应用程序能够使用的最大堆大小大约 是 1.2 GB 或者 1.3 GB。不幸的是,某些用户因为要向该应用程序灌输大量的数据,以至于占用的空间 常常接近这个极限。最明显的调优方案是转移到 Unix 机器上,但是因为不切实际而被排除掉了——客户 更愿意让这个应用程序减肥。

于是,我们的任务就定下来了。对这个胖客户机进行剖析,看看到底是什么占用了这些空间。然后对 这些对象减肥,为以后的扩展或者更大的数据量留下空间。我们认为这事很容易。可能要花点时间,因为 减少对象的数量通常不能一蹴而就,但是这么大的堆, 肯定有很多赘肉能够割掉。我们这样想。

通常的过程

我们开始了通常的内存占用缩减过程:建立测试环境、规定可再现的测试、启动剖析程序、运行测试 、分析数据、查找调优的机会。时间不断流逝,我们一直忙个不停……或者说我们是这样认为的。现在, 我们进入了“运行测试”阶段,剖析程序趴下了。于是我们再次尝试。又死掉了。我们改变了剖析程序的 配置,将开销减到最少,再次尝试。又死掉了。根本就没留下足够容纳剖析程序完全运行的 JVM 堆空间 ,更不用说生成任何有用的剖析数据了。而我们使用的是一种上等的商业剖析程序,一般是很可靠的,所 以我们很吃惊。

试一次,再试一次

没关系,海里有数不清的鱼,现在也有数不清的剖析程序(关于剖析程序的最新评述,请参阅 Resources)。又是一天,又使用了一个剖析程序,怎么样呢?不幸的是,测试过程是惊人的相似。和一 号剖析程序差不多在同一点上,二号剖析程序又让 JVM 崩溃了。和一号剖析程序一样,它甚至可以做更 多的配置,重新配置,降低开销,去掉更多的数据。但它还是和一号剖析程序一样,也崩溃了。糟糕的是 ,三号剖析程序也没有什么不同。

巧妙的剖析程序

但是,四号剖析程序有了微妙的变化。对存活对象的快照进行内存分析(忽略对象的创建和垃圾收集 ,只观察某一点上存活对象的快照),在请求进行快照之前,四号剖析程序根本没有增加 JVM 的开销。 成功了!我们的测试第一次在剖析程序运行的时候通过了需要拍摄快照的那个点。我们很高兴。然后我们 激活了快照,于是 JVM 崩溃了。

我们又尝试了一次,但是这个剖析程序生成快照需要太多的额外空间。根本无法工作。我们又回到了 起点!尽管还有半打商业剖析程序可供尝试,但结果是显然的。应该做一些横向思考了。

具有讽刺意味的是,我们的问题正在于剖析程序本身的复杂性。我们需要某种简单的东西。当然,简 单并不意味着开销低,但是既然那些复杂的剖析程

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号