当前位置: 首页 > 面试题库 >

VisualVM中的配置文件整个Java程序执行

卞云瀚
2023-03-14
问题内容

在Java性能分析中,如今似乎所有(免费)的技术通向JDK6附带的VisualVM
Profiler。它看起来像是一个不错的程序,每个人都吹捧如何将它“附加到正在运行的进程中”作为主要功能。问题是,这似乎是 本地进程上使用它
的唯一方法 。我希望能够在探查器中 启动 程序,并跟踪其 整个执行过程

我尝试使用如何使用visualvm来分析应用程序启动中-Xrunjdwp描述的选项,但是在两种传输方法(共享内存和服务器)之间,这两种方法都不对我有用。VisualVM似乎与前者没有任何集成,并且VisualVM拒绝连接到或,因此后者也不好。我还尝试将简单的读取内容插入程序中以在执行过程中插入暂停,但是在这种情况下,VisualVM会阻塞,直到读取完成为止,并且直到执行完毕后才允许您开始分析。
我也尝试过研究 Eclipse插件,
但是网站上到处都是死链接, 当我尝试使用它时
,启动器会崩溃并显示 localhost``127.0.0.1``System.in
NullPointerException
(这可能不再是准确的)。

来自C,这对我来说似乎不是一个特别困难的任务。我只是在想什么吗?或者这真的是不可能的要求吗?我乐于接受任何建议,包括使用其他(也是免费的)探查器,并且我不反对命令行。


问题答案:

考虑使用HPROF,并像一个工具打开数据文件HPjmeter
-或者只是阅读你喜欢的编辑器生成的文本文件。

Command used: javac -J-agentlib:hprof=heap=sites Hello.java

SITES BEGIN (ordered by live bytes) Fri Oct 22 11:52:24 2004
          percent          live          alloc'ed  stack class  rank   self  accum     bytes objs     bytes  objs trace name
    1 44.73% 44.73%   1161280 14516  1161280 14516 302032 java.util.zip.ZipEntry
    2  8.95% 53.67%    232256 14516   232256 14516 302033 com.sun.tools.javac.util.List
    3  5.06% 58.74%    131504    2    131504     2 301029 com.sun.tools.javac.util.Name[]
    4  5.05% 63.79%    131088    1    131088     1 301030 byte[]
    5  5.05% 68.84%    131072    1    131072     1 301710 byte[]

HPROF能够显示CPU使用率,堆分配统计信息并监视争用概要文件。此外,它还可以报告Java虚拟机中完整的堆转储以及所有监视器和线程的状态。



 类似资料:
  • 我尝试使用maven命令行执行多个maven概要文件 但它只对Profile2执行,Profile1永远不会执行。通过命令行执行多个配置文件需要帮助。 另请注意,当我列出活动配置文件时,它会将两个配置文件显示为活动的。

  • 问题内容: 据我所知,您只能使用VisualVM来分析正在运行的应用程序。 有谁知道使用VisualVM剖析Java应用程序启动和启动的方法吗? 我相信必须有一种方法,否则将是一个重大的疏忽。 希望我只是误读了文档。 谢谢,第 问题答案: 您是否要使用`-Xrunjdwp“命令行选项来设置性能分析?如果是,则该选项仅出于此目的具有” suspend“参数 : 如果要在加载主类之前立即挂起目标VM,

  • 问题内容: 我如何从Java程序运行本地jar文件? jar文件不在Java调用程序的类路径中。 问题答案: 我建议你使用并启动一个新的JVM。 以下是一些入门知识:

  • 问题内容: 好的,所以我不想在这里展开一场圣战,但是我们正在努力巩固处理应用程序配置文件的方式,我们正在努力决定采用哪种最佳方法。目前,我们分发的每个应用程序都在使用其自己的临时配置文件,无论是属性文件(ini样式),XML还是JSON(目前仅在内部使用!)。 目前,我们的大多数代码是Java,因此我们一直在研究Apache Commons Config ,但是我们发现它非常冗长。我们还研究了XM

  • 问题内容: 作为程序的一部分,我有一个连接管理器,该管理器从客户端接收连接,然后为客户端提供用于连接的端口号和密码。这时经理需要调用jar文件,我必须使用一些参数来处理此连接,然后继续操作(忽略其他程序在做什么)。 我的问题一直在执行jar文件。我查找了类似的问题,并尝试使用流程生成器和Runtime.exec。我在jar文件中移动,并检查了它的权限。它只是拒绝在另一个Java程序中工作,而在命令

  • 我尝试了一个显示其他响应的测试用例,我将一步一步地解释它: > 我在我的设备上安装了MDM配置文件,这提示我安装了一个应用程序,并且我成功地安装了它。应用程序已进入“应用程序中的配置文件”部分。 然后我手动删除了应用程序。