我试图使Java Flight Recorder能够在使用Neo4j桌面运行Cypher查询时每10秒收集一次线程转储。但在Neo4j桌面的“设置”选项卡(配置文件)中,建议的飞行记录器选项无法识别,并在启动过程中引发错误。
我正在使用Oracle JDK 11。
这些是我在文件中输入的命令-
# flight recorder settings
dbms.jvm.additional=-XX:+UnlockCommercialFeatures
dbms.jvm.additional=-XX:+FlightRecorder
dbms.jvm.additional=-XX:FlightRecorderOptions=stackdepth=500
dbms.jvm.additional=-XX:+UnlockDiagnosticVMOptions
dbms.jvm.additional=-XX:+DebugNonSafepoints
当我启动DB时,这些会引发一个错误-
Active database: graph.db
Directories in use:
home: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3
config: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3/conf
logs: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3/logs
plugins: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3/plugins
import: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3/import
data: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3/data
certificates: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3/certificates
run: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3/run
Starting Neo4j.
Unrecognized VM option 'UnlockCommercialFeatures'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Active database: graph.db
Directories in use:
home: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3
config: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3/conf
logs: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3/logs
plugins: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3/plugins
import: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3/import
data: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3/data
certificates: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3/certificates
run: /Users/manishgiri/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-4efa4b3e-50bc-46fa-90b2-ee6df8205205/installation-3.5.3/run
Starting Neo4j.
Unrecognized VM option 'FlightRecorder'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
通过在另一个简单的程序上测试,我已经验证了飞行记录器在我的机器上工作-
java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=120s,filename=myrecording.jfr OOMEGenerator
此命令工作正常,并成功生成录制。
是否有其他方法在配置文件中启用飞行记录器设置?
Neo4j桌面包括一个来自Azul的Java虚拟机,它基于OpenJDK,不识别-XX:UnlockCommercialFeatures标志。
由于飞行记录器已经开源,因此不再需要该标志(JDK 11)。Oracle JDK将忽略该标志。
最简单的方法就是删除-XX:UnlockCommercialFeatures标志。
如果这不起作用,即它抱怨-XX:FlightRecorder或-XX:StartFlightRecording,可能是因为Neo4j Desktop附带了Azul的早期版本,Azul不支持FlightRecorder。
如果是这种情况,您必须切换JDK。
(您也可以删除-XX: FlightRecorder,因为自Oracle JDK 8u40之前的版本以来不需要此标志)
java版本java(TM)SE运行时环境(构建1.7.0_79-B15)java HotSpot(TM)64位服务器VM(构建24.79-B02,混合模式) 我使用的ARG
今天我看了一下Java7Update45中引入的任务控制,并用飞行记录器进行了一些测试。一切似乎都在按预期工作,我从我测试的应用程序中获得了大量关于线程、内存和任何东西的数据。只有一件事对我来说似乎很奇怪:在“General”类别中没有显示CPU使用情况,在CPU使用情况图标下面只有一个句子“no Events In Recording”。当我不使用飞行记录而是使用JMX控制台时,CPU使用情况显
我有一个Java程序,我正在努力改进。我怀疑代码中的同步块会损害性能,但我想在接触代码之前确定这是我的问题。 我还应该补充一点,使用Java Mission Control直接连接到服务器不是一个选项(或者是吗?)当我使用ssh回弹实际连接到它时...
我们有一个性能很差的应用程序,因此我们使用飞行记录器的方法分析,看看时间都花在哪里了。它基本上起作用了,但一分钟的记录所采集的样本数远低于100个。(使用“分析”预设) 我使用了一个简单的示例应用程序(对随机数求和)进行比较,它产生了大约6000个样本一分钟或记录--这在我看来是正确的。
问题内容: 我正在尝试使用JAVA解析JFR转储。我关注了这个博客,http://hirt.se/blog/?p=446。但是现在不推荐使用这些方法。JFR到JAVA是否有任何受支持的解析器?如果不能,您能否指出我是否可以从JFR转储中检索数据? 问题答案: 正如Klara提到的那样,没有官方支持的解析器。希望JDK 9将正式支持JFR解析器。现在,您可以使用Hirt博客中提到的API 。不用担心
我有一部Android手机,我想在上面通过编程切换飞行模式。 我无法启动这个设备,这使得我正在运行的任何应用程序都没有权限编辑这些设置,所以我使用adb打开设置菜单并在那里切换开关。 在某些情况下,执行以下adb shell命令将有效: 但是,仅当包含飞行模式开关的菜单是设置页面上列出的第一个菜单选项时,这才有效,因为“android.settings.AIRPLANE_MODE_SETTINGS