Java hprof探查器输出不';无论'lineno'值为多少,都不包括行号
我在跑步Java hprof探查器输出不';无论'lineno'值为多少,都不包括行号,java,profiling,hprof,Java,Profiling,Hprof,我在跑步 java -cp some:jars:out \ -agentlib:hprof=cpu=times,format=a,file=java.hprof.txt,lineno=y,doe=y com.foo.Benchmark \ < /dev/null 如果我将lineno=y更改为lineno=n我仍然会得到未知行 我用-g编译了这些类。我的javac看起来像 javac -g -Xlint -encoding UTF-8 -source 1.5 -d out -classp
java -cp some:jars:out \
-agentlib:hprof=cpu=times,format=a,file=java.hprof.txt,lineno=y,doe=y com.foo.Benchmark \
< /dev/null
如果我将lineno=y
更改为lineno=n
我仍然会得到未知行
我用-g
编译了这些类。我的javac
看起来像
javac -g -Xlint -encoding UTF-8 -source 1.5 -d out -classpath ... src/main/com/foo/*.java
我检查了.class
文件以确保它们有行号:
javap -classpath out -c -l com.foo.Benchmark
展示了很多东西,比如
LineNumberTable:
line 1077: 0
line 1078: 8
line 1079: 14
line 1080: 21
line 1082: 23
line 1083: 31
line 1084: 43
我是否使用了一些防止行号输出的标志组合?我遇到了完全相同的问题,但使用
-g
编译源代码有帮助。在使用-g
编译之后,我看到这样的行号(如果没有-g
选项,我就看不到其他行号)-
现在,如果我运行这个-
java -cp "./build/classes" -agentlib:hprof=heap=sites,depth=20 org.sample.welcome.Main a b c
我确实得到了用户定义类的行号。尽管我不确定你的情况到底出了什么问题,但这些都是我的观察结果-
- 使用javac而不使用
:如果将-g
(默认值-lineno
)设置为y
,除了用户定义的类(y
,在上述情况下),我仍然看不到大多数类的行号。如果我已经将Main
设置为-lineno
,那么无论如何我都不会看到任何类的行号n
- 将javac与
一起使用:如果将-g
设置为-lineno
,我可以看到所有类的行号(不确定在您的情况下发生了什么错误)y
注意:在上面的示例中,我使用的是JDK1.6谢谢您的指针。我不再将此基准设置为易于运行,但我会记住这一点。Mike的示例使用
cpu=times
选项,您的--heap=sites
。后一个选项不输出行号,第一个选项不输出行号。
LineNumberTable:
line 16: 0
line 17: 8
line 18: 12
line 19: 20
line 18: 29
line 21: 35
java -cp "./build/classes" -agentlib:hprof=heap=sites,depth=20 org.sample.welcome.Main a b c