我正在尝试找到一种方法来查看JVM为lambda函数加载的类的数量。 我有一个朋友的示例代码,但是它不起作用。 我有以下内容:
java -cp my.jar -verbose:class Handler | grep Loaded
它一定缺少某些内容,因为我没有“ Loaded”类。 “加载”是“已加载”的替换吗?
其结果类似于:
[0.179s][info][class,load] java.text.Format source: jrt:/java.base
[0.179s][info][class,load] java.text.MessageFormat source: jrt:/java.base
[0.179s][info][class,load] java.util.Locale$Category source: jrt:/java.base
[0.179s][info][class,load] java.util.Locale$1 source: jrt:/java.base
[0.180s][info][class,load] java.text.FieldPosition source: jrt:/java.base
[0.180s][info][class,load] java.util.Date source: jrt:/java.base
我期待着这样的事情:
[Opened /usr/java/j2sdk1.4.1/jre/lib/rt.jar]
[Opened /usr/java/j2sdk1.4.1/jre/lib/sunrsasign.jar]
[Opened /usr/java/j2sdk1.4.1/jre/lib/jsse.jar]
[Opened /usr/java/j2sdk1.4.1/jre/lib/jce.jar]
[Opened /usr/java/j2sdk1.4.1/jre/lib/charsets.jar]
[Loaded java.lang.Object from /usr/java/j2sdk1.4.1/jre/lib/rt.jar]
[Loaded java.io.Serializable from /usr/java/j2sdk1.4.1/jre/lib/rt.jar]
[Loaded java.lang.Comparable from /usr/java/j2sdk1.4.1/jre/lib/rt.jar]
[Loaded java.lang.CharSequence from /usr/java/j2sdk1.4.1/jre/lib/rt.jar]
[Loaded java.lang.String from /usr/java/j2sdk1.4.1/jre/lib/rt.jar]
你知道我在想什么吗?为什么我看不到“已加载”的类?
我有Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS
谢谢。 抄送
答案 0 :(得分:0)
我有答案。 预期的结果是在Java 8上。 在Java 11中,结果并不相同,因此我必须针对每个版本调整命令。
答案 1 :(得分:-1)
请尝试以下课程。希望这对您有用
java -cp my.jar -verbose:class Handler | grep 'Load*\|Open*'
java -cp my.jar -verbose:class Instrumentation | grep 'Load*\|Open*'
java -cp my.jar -verbose:class Serialisation | grep 'Load*\|Open*'