我有一个Java程序,我正在努力改进。我怀疑代码中的同步块会损害性能,但我想在接触代码之前确定这是我的问题。
java -XX:+UnlockCommercialFeatures -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -XX:+FlightRecorder -XX:StartFlightRecording=settings=profile,dumponexit=true,filename=test.jfr -classpath lib/*:src/ <my program with its arguments>
我还应该补充一点,使用Java Mission Control直接连接到服务器不是一个选项(或者是吗?)当我使用ssh回弹实际连接到它时...
我自己的一个更多的研究为我提供了答案。
需要在飞行记录器配置文件中指定JavaMonitorEnter事件(以及希望监视的其他事件)。在这种情况下,我使用了profile
配置,该配置与Oracle JDK的default
配置一起提供。
我使用Java Mission Control创建了自己的配置。这篇博客非常有助于介绍如何在Java Mission Control中找到创建自定义记录配置的工具。
-XX:StartFlightRecording=settings=/home/<username>/Custom,<other options>...
在我的应用程序中,单个阻塞比这个阈值短,因此当我在Java Mission Control中打开记录时,什么也不会出现。
我感到困惑的主要原因是这条消息指出“Java阻塞规则要求事件可用...”。对我的情况更准确的描述是没有记录超过配置阈值的阻塞。
今天我看了一下Java7Update45中引入的任务控制,并用飞行记录器进行了一些测试。一切似乎都在按预期工作,我从我测试的应用程序中获得了大量关于线程、内存和任何东西的数据。只有一件事对我来说似乎很奇怪:在“General”类别中没有显示CPU使用情况,在CPU使用情况图标下面只有一个句子“no Events In Recording”。当我不使用飞行记录而是使用JMX控制台时,CPU使用情况显
但是任务控制在“方法分析”面板中只显示了大约100个计数。了解整个发射过程的趋势,考察过程中哪种方法花费的时间最多,这太少了。 我如何采取更多的方法计数与飞行记录和JDK任务控制?文件中的哪个参数影响方法计数的数量?
我试图使Java Flight Recorder能够在使用Neo4j桌面运行Cypher查询时每10秒收集一次线程转储。但在Neo4j桌面的“设置”选项卡(配置文件)中,建议的飞行记录器选项无法识别,并在启动过程中引发错误。 我正在使用Oracle JDK 11。 这些是我在文件中输入的命令- 当我启动DB时,这些会引发一个错误- 通过在另一个简单的程序上测试,我已经验证了飞行记录器在我的机器上工
FlyControls 启用了一种类似于数字内容创建工具(例如Blender)中飞行模式的导航方式。 你可以在3D空间中任意变换摄像机,并且无任何限制(例如,专注于一个特定的目标)。 例子 misc / controls / fly 构造函数 FlyControls( object : Camera, domElement : HTMLDOMElement ) object: 被控制的摄像机。 d
问题内容: 我创建了一个服务来隔离业务逻辑,并将其注入需要信息的控制器中。我最终要做的是让控制器能够监视服务中的值,这样我就不必进行广播/通知或复杂的消息传递解决方案,就可以将所有控制器的数据更改通知给控制器。服务。 我创建了一个plnkr,展示了我要执行的操作的基本概念。 http://plnkr.co/edit/oL6AhHq2BBeGCLhAHX0K?p=preview 可以让控制器监视服务
我们有一个性能很差的应用程序,因此我们使用飞行记录器的方法分析,看看时间都花在哪里了。它基本上起作用了,但一分钟的记录所采集的样本数远低于100个。(使用“分析”预设) 我使用了一个简单的示例应用程序(对随机数求和)进行比较,它产生了大约6000个样本一分钟或记录--这在我看来是正确的。