通过JVM查看关于Apache Geronimo的统计信息 - 编程入门网
您需要 Java 5 。如果愿意,您可 以容易地改变它以不使用泛型,然后它将用较旧的 JDK 运行。它通过创建可随机 调整大小的长整数数组导致内存分配。它通过随机将这些数组的一部分(大约 20%)放入一个列表来模拟内存泄漏。因此,垃圾收集器可以回收在每个循环上分 配的大多数内存,但它不能回收添加到列表中的数组。您可以试验一些参数,比 如睡眠大小和最大块大小。它还可以接收命令行参数,所以您可以容易地告知它 要执行多少次循环。
编译 StatGen 之后,您可以简单地从 java StatGen 100 开始。这执行 100 次循环。记住,您可以在命令行指定最小和最大堆大小。采用不同的最小和最大 堆大小在运行 visualgc 时将产生截然不同的视觉效果。您还可以指定不同的垃 圾收集算法;用 visualgc 监视 StatGen 时,将很好地理解这些算法的区别。 图 1 展示了一些用 StatGen 运行 visualgc 的示例输出。 图 1. 用 StatGen 运行 visualgc 图 2 展示了最有趣的窗口。它首先展示了 JIT 编译。在本例中,只有三个窗 口,这对于这样一个简单的示例来说并不稀奇。它还展示了类加载器信息 —— 再说一遍,这很简单,因为应用程序太简单了。 图 2.基本的 JVM 信息和堆使用情况 通过JVM查看关于Apache Geronimo的统计信息(4)时间:2011-08-27 IBM Michael Galpin接着,它展示了总体的垃圾收集统计信息。您会看到 123 次收集和进行垃圾 收集所花费的总时间约为 0.3 秒。从第一个图形中,您可以看到应用程序运行了 大约 100 秒,所以进行垃圾收集花费了该时间的 0.3%。 还有关于不同分代的统计信息。Eden 空间显示了从未通过垃圾收集的新对象 。示例代码生成许多这样的新对象,并且它们很快就被收集掉。 注意两个 Survivor 空间。它们基本上是较小的经历过少数几次垃圾收集的对 象集。所有对象要么是立即准备收集的,要么是从未准备收集的,所以,如果它 们到了 Survivor 空间,就将很快改变这种状态。 接下来是较老的一代。这些对象经历了大量垃圾收集。您可以看到稳定的对象 增加,表明存在潜在的内存泄漏。最后,您看到的是 JVM 确定永远不会被收集的 对象的永久代。 直方图窗口(参见 图 3)展示了关于 Survivor 空间的数据 —— 此处列出 的不多。 图 3. 展示关于 Survivor 空间的数据的直方图窗口 Geronimo 和初始构建 在您前面下载的二进制和源安装中有几个目录。二进制下载包括运行和使用 Geronimo 所必需的 Geronimo 的梗概。源下载包括所有 Geronimo 源代码,包括 用于构建整棵树的 Maven 构建脚本。首先来看二进制发行版,然后再看源代码发 行版。 关于 Geronimo 示例应用程序的 JVM 统计信息 Geronimo 附带了几个示例 Web 应用程序。既然您有了一些从 JVM 提取 JVM 统计信息的工具,就可以容易地为 Geronimo 应用程序执行此操作。 启动 Geronimo 仅仅启动 Geronimo 并用 visualgc 监视它就相当有趣,如 图 4、图 5 和 图 6 所示。 图 4. 启动 Geronimo 并用 visualgc 进行监视 通过JVM查看关于Apache Geronimo的统计信息(5)时间:2011-08-27 IBM Michael Galpin图 5. 展示 JIT 编译、类加载器信息和垃圾收集的图形 图 6. Survivor Age Histogram 用标准的 java -jar %GERONIMO_HOME%/bin/server.jar 命令启动 Geronimo 。仅通过使用启动命令上的 -server 选项即可获得直接视图,如 图 7 所示。 图 7. 使用启动命令上的 -server 选项 注意,JIT 编译少得多。这是因为在您使用 -server 选项启动 JVM 时加载了 更多的类。默认的启动模式设计用于更快的启动,以适应桌面应用程序。 在这两种情况下,您都会在堆上看到许多长时间运行的对象,但是一旦 Geronimo 完全启动,这个数量 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |