在工作中,我们发现在某些情况下(尤其是慢速情况),我们有不同的行为,这些行为是在重新启动后获得的。
我们猜测缓存未正确初始化,或者可能是并发问题……无论如何,它在生产环境之外的任何其他环境中均不可复制。
实际上,我们没有激活记录器...这是一个古老的组成部分...
因此,我想知道是否有工具可以帮助我们查看JVM内存中存在的不同对象,以便检查缓存的内容...
谢谢!
编辑:
我没有直接访问生产服务器的权限,我们的应用程序服务器是weblogic 10,我没有指向该对象的指针,但是我知道缓存对象的类型...
编辑2:
我们的服务器在jre 1.5上运行,是否可以使用jmap?在jdk5中找不到它:(另外,远程调试可能很好,但是出于安全原因我们不能...
编辑3:
实际上jhat + VisualVM对我来说还可以,我在转储中找到了我的对象,但我无法正确读取哈希图(包含约60000个项目的对象)...是否有一种以友好方式读取并发哈希图的工具?我需要找到一个键的值(或它在地图中的存在),而无需手动浏览60k记录。其实我在eclipse MAT论坛上读到它也是不可能的...
Edit4:经过一些经验,我真的很喜欢VisualVM之类的工具。还使用了YourKit。OQL等一些有用的功能可以找到您需要查看的正确实例。
基本上,这是对Will所说的内容的扩展。让我们的管理员在生产系统上进行堆转储,已经取得了巨大的成功,但要注意,要转储的特定服务器在转储完成之前将无响应。然后获取该文件,并使用Eclipse MAT插件进行查看。如果您不喜欢Eclipse,则也可以使用Netbeans和普通的VisualVM插件。但是,这可能会创建一些大文件,您可能需要在64位系统上运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句