gpt4 book ai didi

java - 在 Java 6 上显示最大字符串和字符数组内容的命令。如何实现?

转载 作者:行者123 更新时间:2023-12-01 09:40:33 25 4
gpt4 key购买 nike

我试图找到一种方法来返回Java堆中最大的Stringchar[]的内容,使用一些java工具。我正在使用 Java 6。

我正在使用一个存在一些内存问题的应用程序。大多数问题来自于为 JPA Hibernate(版本 3.3.0)生成的查询创建的 String 和 Char 数组。

我可以使用jmap工具来显示内存消耗较高的情况:

jmap -histo:live <PID_OF_JAVA_PROCESS> | head -n 20

并打印类似的内容(第一个是 char[]):

num     #instances         #bytes  class name
----------------------------------------------
1: 3286152 1412140072 [C
2: 10198187 239513896 [Ljava.lang.String;
3: 3937983 126015456 java.lang.String
4: 662242 47550936 [[Ljava.lang.String;

我可以使用Eclipse内存分析器一一查看内部字符数组和字符串的内容。但这并不富有成效。

我想让这些信息更容易,使用一些java工具来获取这个字符串和字符数组的所有信息并保存在一些文本文件中。

通过这些信息,我可以了解整个场景并优先处理问题较多的查询。

谢谢!

最佳答案

使用 JVisualVM,这很容易。运行您的程序,然后启动 JVisualVM。然后在 JVisualVM 的进程浏览器中,识别您的 Java 进程并右键单击并选择“Head Dump”,它将创建您的程序使用的 HEAP 的转储。

在流程浏览器中输入生成的Head节点,然后点击“classes”选项,就会有类了。

搜索 char[] 类名并双击它,您将在实例表中找到您搜索的信息(HEAP 中 char[] 的所有实例)。您可以对所有表格进行排序。

关于java - 在 Java 6 上显示最大字符串和字符数组内容的命令。如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38485841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com