Seb*_*ber 9 java caching jvm production-environment
在工作中我们发现在某些情况下(特别是缓慢的情况),我们在重启时获得了不同的行为.
我们猜测缓存未正确初始化,或者可能是并发问题......无论如何,它不能在生产中的任何其他环境中重现.
我们实际上没有记录器来激活...它是一个旧组件......
因此,我想知道是否有工具可以帮助我们查看JVM内存中存在的不同对象,以便检查缓存的内容......
谢谢!
编辑:
我没有直接访问生产服务器,我们的应用服务器是weblogic 10,我没有指向对象的指针,但我知道缓存对象类型...
EDIT2:
我们的服务器运行在jre 1.5上,是否可以使用jmap?在jdk5中找不到它:(另外,远程调试可能不错,但出于安全原因我们不能...
EDIT3:
实际上jhat + VisualVM对我来说没问题,我在转储中找到了我的对象但是我无法正确读取hashmap(包含大约60000个项目的对象)...是否有工具以友好的方式读取concurrenthashmap?我需要找到一个键的值(或它在地图中的存在),而无需手动浏览60k记录.其实我在eclipse MAT论坛上看到它也不可能用它...
Edit4: 经过一些经历后,我非常喜欢像VisualVM这样的工具.也用过YourKit.有一些有用的功能,比如OQL,可以找到你需要查看的正确实例......
这基本上是为了扩展Will所说的内容.通过让我们的管理员对我们的生产系统进行堆转换,我取得了很大的成功,但需要注意的是,在转储完成之前,您要转储的特定服务器将无响应.然后获取该文件并使用Eclipse MAT插件来查看它.如果你不喜欢Eclipse,也可以使用Netbeans和普通的VisualVM插件.这可以创建一些大文件,您可能需要在64位系统上运行.