我的任务是分析一些网络应用程序的内存消耗问题。我让自己熟悉Mission Control和VisualVM之类的工具并用它们来解决许多泄漏,但这样做会遇到我无法解释的行为。
设置
具体来说,我发现即使我自己只运行JBoss 7(也就是说,关闭部署程序并让服务器本身运行),我可以看到大约1MB的常规分配(后面是垃圾回收) / 3秒左右。
一时兴起,我在做GC之后立即进行了堆转储,然后一旦分配进行了。看起来我所看到的大多数对象都与模块有关,要么是Xerces活动(读取模块XML,我猜?)还是与ModuleLoader相关的对象。我看到的大多数对象都有“引用”,看起来像这样:
http://i.stack.imgur.com/LlUmv.png(抱歉,我无法标记图片)
我的想法(可能完全偏离基础)是JBoss扫描新模块以支持热部署?但问题是,用例不是我曾经使用的用例:新部署总是只涉及关闭服务器,因此动态扫描模块实际上是不必要的。
我想我的问题是:
我对模块加载的看法是否有任何优点?
感谢阅读!