为什么VisualVM Profiler不会配置我的应用程序?

Luk*_*uke 31 java debugging profiling visualvm

我创建了一个简单的1文件java应用程序,它循环遍历循环,调用一些函数,分配一些内存,添加一些数字等.我通过eclipse运行该应用程序Run As->Java Application.

正在运行的应用程序出现在Java VisualVM下Local.

我双击该应用程序并转到Profiler选项卡.

默认设置为:

Start profiling from classes: my.main.package.**

Do not profile classes: java.*, javax.*, sun.*, sunw.*, com.sun.*

我点击CPU.的CPUMemory按钮变灰.什么都没发生.

Statusprofiling inactive.

当我的申请终止Statusapplication terminated.

我在这做错了什么?我需要调整一些设置吗?启动应用程序时是否需要设置VM标志?

Kub*_*uba 34

java 1.7.0_45更新后我遇到了同样的问题.我不得不删除以下文件夹:

C:\users\'username'\AppData\Local\Temp\hsperfdata_'username'
Run Code Online (Sandbox Code Playgroud)

在这样做之后,一切都像魅力一样.

  • 这是唯一对我有用的答案:真的*删除*这个文件夹. (2认同)

Mic*_*ael 22

我猜这个问题与从Eclipse中启动的应用程序有关,这是因为JVisualVM期望在java.io.tmpdir目录中找到数据(通常C:\Users\[your username]\AppData\Local\Temp\hsperfdata_[your username]在Windows系统上).

假设而不是在JPS,JVisualVM等期望的正常位置,Eclipse将数据放入它自己的临时文件夹中?

如果是这样,请尝试使用JVisualVM jvisualvm -J-Djava.io.tmpdir=[Eclipse's temp directory]来明确告诉它数据的位置.

如果找不到该hsperfdata_$USER文件夹,请尝试以通常的命令行Java方式在Eclipse外部运行应用程序.

另请注意,在1.6.0_23周围引入了一个影响临时文件夹(区分大小写)的错误,所以也许您可以通过更新到更新的Java 6(或7)版本来获益?