如何监控Java应用程序的Windows内存使用情况 - 编程入门网
用,打开如图 6 所示的窗口。
图 6. 观察进程的内存 如何监控Java应用程序的Windows内存使用情况(6)时间:2011-04-16 IBM Emma Shepherd现在我们分析一下 PrcView 显示的地址空间映射的前几行。第一行表明从地址 0 开始, 有一块长度为 65,536 (64K) 的内存是自由空间。这些地址什么也没有分配,也不能用于寻 址。第二行说明紧跟在后面,从地址 0x00010000 起,有一个长为 8,192 字节(两个 4K 页 面)的提交内存,即可以寻址并且得到分页文件中的页帧支持的内存。然后是一段自由空间 ,另一段提交空间,如此等等。 碰巧的是,这些地址空间区域对您来说没有什么意义,因为它是供 Windows 使用的。描 述 Windows 地址空间的 Microsoft 文档指出,这些不同的区域是为兼容 MS-DOS 保留的用 户数据和代码所用的区域从 4MB 开始(请参阅 参考资料)。 向下滚动窗口,最终会看到某些您能够清楚识别的地址空间,如图 7 所示。 图 7. Java 堆 图 7 中高亮显示的行及其后的一行对应 Java 堆。我们给这里启动的 Java 进程 1000MB 大小的堆(使用 -mx1000m),对于该程序而言,这个堆太大了,但这样在 PrcView 映射中 更加清楚。高亮显示的一行说明堆的提交部分只有 4MB,从地址 0x10180000 开始。紧随在 后面的一行显示了一个很大的保留区域,这是堆中还没有提交的那一部分。在启动过程中, JVM 首先保留出完整的 1000MB 空间(从 0x10180000 到 0x4e980000 范围之内的地址都不 能用),然后提交启动过程所需要的那一部分,该例中为 4MB。为了验证该值确实对应当前 的堆大小,您可以用 -verbosegc JVM 选项调用该 Java 程序,可以打印出垃圾收集程序中 的详细信息。从下面的 -verbosegc 输出中第二个 GC 的第二行可以看出,当前的堆大小大 约是 4MB:
-verbosegc 的输出格式取决于所用的 JVM 实现,请参阅 参考资料中关于 IBM JVM 的相 关文章,或者参考供应商的文档。 如果活动数据的数量增加,JVM 需要将堆的大小扩展到 4MB 之外,它就会提交稍微多一 点的保留区域。就是说,新的区域可以从 0x10580000 开始,与已经提交的堆空间连接在一 起。 在 图 7 所示的 PrcView 窗口中,最下面一行的三个总数给出了进程提交的总内存,这 些数据是根据第七列 Type 计算得到的。三个总数为: Private:分页文件支持的提交内存。 Mapped:直接映射到文件系统的提交内存。 Image:属于可执行代码的提交内存,包括启动的执行文件和 DLL。 到目前为止,我们只是在根据大小来了解堆在地址空间中的分配情况。为了更好的理解其 他一些内存区域,如果能够观察内存的内部情形,会对您的了解很有帮助。这就要用到下面 将讨论的工具 TopToBottom。 TopToBottom TopToBottom 可以从 smidgeonsoft.com 免费获得(请参阅 参考资料)。该工具没有任 何文档,但是为当前执行进程提供了一组完备的视图。您不仅能够按名称进程 ID 排序,还 能够按起动时间排序,如果需要了解计算机上程序的启动顺序这一点可能很有用。 图 8 所示的 TopToBottom 窗口中,进程是按创建时间排序的( View --> Sort -- > Creat |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |