哪个调试工具可以列出内部字符串?

问题描述

| 我正在寻找可以列出已被内部化的字符串的调试工具吗?理想情况下,我想标记一个标记,并列出在该标记之后添加的字符串的列表。 提前致谢。     

解决方法

        也许最简单的方法是使用字节码查看器。所插入的任何String都会存在于包含String文字的类文件的constant_pool中。例如,在我回答的另一个StackOverflow问题的最新类文件中,我的代码中包含以下String文字:“ 0”。这在常量池中显示为“ 1”类型。我使用的字节码查看器(和编辑器,所以要当心!)是JBE。 JBE下载     ,        在最新的Hotspot VM上,插入的字符串看起来与其他字符串一样-唯一的区别是VM正在跟踪底层的char数组(我认为它具有额外的JNI引用,但不会在YourKit转储中显示-将是有意思的研究)。 就是说,Yourkit提供了对重复字符串的内存检查,我相信它可以满足您的需求。如果将它与\“ Trace Allocations \”结合使用,则可以直接进入分配这些字符串的代码。 参见http://www.yourkit.com/docs/95/help/inspections_mem.jsp#duplicate_strings - 获取在两个时间点之间添加的字符串列表更加容易: 使用jmap或您喜欢的分析器获取两个堆转储 进行堆比较 显示String类的所有实例 应该可以与任何探查器甚至jhat一起使用(如果您足够耐心的话)。如果使用YourKit,则可以使用书签功能,并且仅拍摄一个堆快照。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...