|
|
1
7
这基本上是为了扩大威尔所说的内容。 我已经取得了巨大的成功,让我们的管理员对我们的生产系统进行成堆的转储,不过要注意的是,在转储完成之前,您正在转储的特定服务器将不会响应。然后获取该文件并使用EclipseMat插件查看它。如果您不喜欢Eclipse,也可以使用NetBeans和普通的VisualVM插件。这可以创建一些大文件,但是您可能需要在64位系统上运行。 |
|
|
2
4
运行JMAP来转储大量对象实例是相当容易的,但我不知道这是否是您真正感兴趣的。 您还可以使用jmap对整个堆进行堆转储,通过它(和jhat),您可以看到对象关系(即什么对象指向什么),但不一定是对象内容。 当然,数据在堆转储中,它不是“单击离开”可见。 我认为一些专业的分析人员会让您内省堆转储中的对象。 另外,您最好在应用程序中添加一些特定的工具,以提供您正在寻找的特定内省,由自定义代码、JMX或其他任何东西触发。 |
|
|
3
3
您是否可以访问对象的句柄/指针?如果是这样,您可以在调试模式下启动它,并在类似Eclipse的调试器中查看它。这将允许您检查变量等。 或者,您可以编写一个小记录器,它反射性地遍历类并记录正在发生的事情。所有这些都假定您有一个可以开始单步执行代码的位置,或者可以获取对缓存值的引用。 编辑:正如我在评论中提到的,我不知道如何在没有某种引用或引用链接的情况下访问对象。例如,对象是否封装在另一个对象中?如果是这样,您可以执行如下操作:
您还可以执行以下操作:
请注意,所有反射方法都会抛出异常,因此您需要酌情处理这些异常。也,
|
|
|
GG33 · 在docker中缓存npm包 2 年前 |