所有本地应用程序上的VisualVM“不支持此JVM”吗?

如何解决所有本地应用程序上的VisualVM“不支持此JVM”吗?

| 我已经花了很长时间来加载和测试我的应用程序,现在我需要对其进行概要分析。但是不幸的是,VisualVM在本地应用程序上总是显示“此JVM不支持”。 这些应用程序是在与VisualVM相同的JVM上启动的。     

解决方法

我发现(至少在Windows下)可以轻松编写小批处理文件以结合特定的JVM来运行VisualVM,这对我来说很重要,因为我同时安装了32位JDK和64位JDK(因此我需要两者,所以这对我来说很明智)。 我已经在文件夹\“ S:\\ applications \\ visualvm \\ bin \\\”中创建了两个批处理文件: run_32.bat:
@echo off
START \"VisualVM 32\" visualvm.exe --jdkhome \"C:\\Program Files (x86)\\Java\\jdk1.7.0_07\"
run_64.bat:
@echo off
START \"VisualVM 64\" visualvm.exe --jdkhome \"C:\\Program Files\\Java\\jdk1.7.0_07\"
显然,所有路径在您的系统上可能都不同,但是总体思路仍然应该正确运行(在所有64位版本的Windows上)。好处是,当我想将VisualVM与在32位JVM上运行的Java应用程序结合使用时,可以使用32位批处理文件,对于64位,依此类推。 \“ start \”命令的唯一好处是批处理文件无需等待它完成就启动应用程序,因此命令提示符窗口立即关闭。这不是VisualVM的功能,而是Windows批处理文件解释器的功能。     ,VisualVM需要使用与要分析的程序相同的JVM(至少具有相同的32位/ 64位大小的Java 6)运行。 (您还必须是同一用户,但是此消息不适用)。 我将三遍检查您所处的环境是否是完全相同的JVM。     ,就我而言,即使JVM匹配(均为64位),唯一可行的方法是将参数“ 2”发送到要监视的JVM。如果您在通过Java Mission Control(JMC)连接时遇到问题,也可以使用。 根据JMX的文档,此参数的作用是:   设置此属性将注册Java VM平台的MBean,并通过专用接口发布远程方法调用(RMI)连接器,以允许JMX客户端应用程序监视本地Java平台,即与Java虚拟机运行在同一台机器上的Java VM。 JMX客户端。 应该可以自动启用它,但是由于某种原因,它不在我的Linux上。     ,在Linux上: 确保您的/ etc / hosts正确引用\“ hostname \”的有效IP地址。 看来这里的差异完全使可怜的jvisualvm及其程序员感到困惑。     ,对于本地tomcat,我也遇到了同样的问题,我在寻找stackoverflow的解决方案。经过一番认真的调试后,我发现VisualGC没有权限从tool.jar文件中获取GC信息。 通过链接 http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstatd.html#SECURITY https://stackoverflow.com/a/42107355/3876619 我按照步骤解决问题 1)创建一个权限文件
vim /tmp/tools.policy
grant codebase \"file:${java.home}/../lib/tools.jar\" {
   permission java.security.AllPermission;
};
保存 2)现在将/tmp/tools.policy添加到JVM启动参数
-Djava.security.policy=/tmp/tools.policy
3)用sudo运行jvisualVm     ,由于@ user3356656的提示,我刚刚发现的一个问题是,如果在计算机位于一个IP上时启动该程序,然后在计算机位于另一个IP上时尝试连接,它将失败。     ,我也遇到了这个问题。我的情况是在Linux上,我使用tomcat_user启动了tomcat,但是我以root用户运行了jvisualvm。在以root用户启动tomcat之后,它可以工作。     ,我遇到的问题是visualvm在Windows 7上检测到我的本地tomcat安装。我可以手动连接,但是没有启用诸如内存快照和visualgc插件之类的东西。我确认我使用的是相同的JVM版本,临时文件权限等。没有用。然后,我发现先启动visualvm,然后再启动tomcat,即可解决问题。     ,如您所见,您正在32位JVM上运行VisualVM 您无需取消安装32位JVM。只是告诉VisualVM使用浏览64位JVM。 如果要永久更改,可以进行编辑 在visualvm_13 \\ etc \\ visualvm.conf中,并在此处指定jvm的路径     ,我的问题是JVM优化-
-XX:+PerfDisableSharedMem
标志将破坏VisualGC。如果jps不会在列表中显示您的应用,这是显而易见的。     ,我可以重现下一个行为。 我有一个带有右键菜单项的Java应用程序,用于打开jvisualvm。 我正在从bat文件作为独立设置运行此Java应用程序。 这意味着我修改了%path%和其他所需的环境变量,例如JDK 从而形成我的环境。 启动应用程序的BAT标记为正在以非管理员身份运行。环境指向64位JDK。 然后我以管理员身份启动其他Java应用程序。 VM来自相同的64位JDK源。 然后,我从第一个应用程序中右键单击即以非管理员身份启动jvisualvm。 我可以在jvisualvm的“应用程序列表”中看到该应用程序,但是单击“系统属性”会出现错误。消息为“此JVM不支持”。 JVM参数是公开的。 解决方案与之前的其他评论类似: 以admin身份右键单击jvisualvm-starter,我也可以看到“系统属性”。 当然,如果JDK是32位的,而其他64位的,则将不起作用。到过那里。 我认为这个概念需要在这里添加。     ,我已将名称更改为Windows User,并将其全部设置为小写,然后重新启动PC,现在一切正常。     ,对我来说,原因是我用JVM进程的另一个用户运行了“ jstatd”。我在linux中有一个特殊的用户来启动JVM线程(这是一个tomcat),但是我用root启动jstatd进程。如果使用root运行jps,则看不到属于其他用户的JVM线程的任何信息。那是麻烦。 我杀死了以root身份启动的“ jstatd”进程,例如su到JVM进程的所有者,然后重新启动了“ jstatd”进程,现在一切正常。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-