JVM 可以检索已通过附加 API 加载到其中的代理列表吗?

2023-12-31

是否可以通过 Java 1.6 Attach api 获取加载到当前 JVM 中的代理列表?如果是这样怎么办?

启动时加载的代理可以通过 RuntimeMXBean 确定,但我看不到如何处理启动后添加的代理。


(这个问题类似于如何查找正在运行的 JVM 附带的 java 代理列表? https://stackoverflow.com/q/28670271/2938364。为了完整起见,我将在这两个问题中添加这个答案。)


检查已使用 Attach API 添加的代理:

如果您对使用 Attach API 在运行时添加到应用程序的代理感兴趣,您可以使用DiagnosticCommandMBean https://docs.oracle.com/javase/8/docs/jre/api/management/extension/com/sun/management/DiagnosticCommandMBean.html。 该 bean 提供了一个称为vmDynlib,一个无参数方法,返回一个String列出所有动态加载的库。

以下是打印应用程序虚拟机加载的所有动态库的代码片段:

ObjectName diagnosticsCommandName = new ObjectName("com.sun.management:type=DiagnosticCommand");
String operationName = "vmDynlibs";
String result = (String) ManagementFactory.getPlatformMBeanServer().invoke(diagnosticsCommandName, operationName, null, null);
System.out.println(result);

这会产生与此类似的输出:

Dynamic libraries:
0x00007ff7b8600000 - 0x00007ff7b8637000     C:\Program Files\Java\jdk1.8.0_181\bin\java.exe
0x00007ffdfeb00000 - 0x00007ffdfecf0000     C:\WINDOWS\SYSTEM32\ntdll.dll
0x00007ffdfe300000 - 0x00007ffdfe3b2000     C:\WINDOWS\System32\KERNEL32.DLL
0x00007ffdfbb30000 - 0x00007ffdfbdd3000     C:\WINDOWS\System32\KERNELBASE.dll
0x00007ffdfe950000 - 0x00007ffdfe9f3000     C:\WINDOWS\System32\ADVAPI32.dll
...

然后您可以检查该文本是否包含特定内容.so or .dll file.


可以非编程方式执行相同的检查。

为此,您可以使用jconsole https://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html tool.

连接到虚拟机,切换到选项卡MBeans, 选择com.sun.management, 选择DiagnosticCommand, 选择Operations, 选择vmDynlibs,并调用它。

在图像中,您可以看到我的测试代理之一附加到应用程序。 该代理是使用Attach API https://docs.oracle.com/javase/7/docs/jdk/api/attach/spec/com/sun/tools/attach/VirtualMachine.html,因此通过检查应用程序的命令行参数(即,没有-agentpath=...将在参数上看到),但仅作为动态加载的库可见。

检查已通过命令行添加的代理:

为了获得完整的参考,我还将发布如何检测通过命令行添加的代理。 您可以使用以下命令检查它们RuntimeMXBean https://docs.oracle.com/javase/7/docs/api/java/lang/management/RuntimeMXBean.html.

这个bean提供了方法getInputArguments,它返回所有 VM 参数的列表。 您可以迭代列表并检查参数agentpath, agentlib and javaagent,类似于以下代码片段:

    RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
    List<String> jvmArgs = runtimeMXBean.getInputArguments();
    System.out.println("JVM arguments:");
    for (String arg : jvmArgs) {
        if (arg.startsWith("-agentpath") || arg.startsWith("-agentlib") || arg.startsWith("-javaagent")) {
            System.out.print("***** ");
        }

        System.out.print(arg);

        if (arg.startsWith("-agentpath") || arg.startsWith("-agentlib") || arg.startsWith("-javaagent")) {
            System.out.println(" *****");
        } else {
            System.out.println();
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JVM 可以检索已通过附加 API 加载到其中的代理列表吗? 的相关文章

  • 如何获取枚举的子集

    大多数情况下 包含所有元素的枚举显示在用户界面的下拉列表中 我们只需要在用户界面中显示 5 个字段中的 2 个 通过某种方式利用可用于枚举的相同函数来获取此数据的更简单方法是什么 enum Color RED GREEN BLACK BLU
  • 带有来自 Selenium 2 / WebDriver 的 Id 的 jQuery 元素选择器

    我可以在 Selenium 中获取元素的 ID RemoteWebElement webElement getId 它返回一个像这样的字符串 e9b6a1cc bb6f 4740 b9cb b83c1569d96d 我想知道这个ID的来源
  • 使用 Spring MVC 返回 PDF 文件

    实际上 我有这个功能 我有一个框架 可以在其中设置 URL ip port birt preview report report rptdesign format pdf parameters 并且该框架呈现 PDF 文件 但我想隐藏该网址
  • 按下按钮时清除编辑文本焦点并隐藏键盘

    我正在制作一个带有编辑文本和按钮的应用程序 当我在 edittext 中输入内容然后单击按钮时 我希望键盘和焦点在 edittext 上消失 但我似乎无法做到这一点 我在 XML 中插入了这两行代码 android focusable tr
  • Spring Data:限制自定义查询的结果

    在我的 Spring 数据存储库中 我 必须 使用自定义查询 Query注解 我知道我可以限制这样的命名查询中的结果数量 Iterable
  • Java,将 null 分配给对象和仅声明之间有什么区别

    之间有什么区别 Object o null and Object o 仅声明 有人可以回答我吗 这取决于您声明变量的范围 例如 局部变量没有default values在这种情况下你将不得不分配null手动 在这种情况下实例变量分配 nul
  • 将 JSON Map 传递到 Spring MVC 控制器

    我正在尝试将 Map 的 JSON 表示形式作为 POST 参数发送到我的控制器中 RequestMapping value search do method RequestMethod GET consumes application j
  • 适用于 Solaris 的 Java 8 中缺少 javaws

    看起来 Oracle 从 Java 8 for Solaris 中删除了 Java Web Start javaws 在 Java 8u51 中不再可用 来自兼容性指南 http www oracle com technetwork jav
  • 总结二维数组

    鉴于我当前的程序 我希望它在用户输入所有值后计算每列和每行的总和 我当前的代码似乎只是将数组的值加倍 这不是我想要做的 例如 如果用户输入具有以下值 1 2 3 2 3 4 3 4 5 的 3x3 矩阵 则看起来就像我在下面的程序中对其进行
  • 确定代码是否在 App Engine 运行时 (Java) 上运行

    如何确定某些代码 Serv let 或简单的类 是否正在 Google App Engine 运行时 Java 上运行 以便决定是否使用 App Engine 的特定库 是否有一些可靠的运行时环境 ID 您可以检查com google ap
  • MongoDB:尝试从 JSON 读取 Long 导致 java.lang.Integer 无法转换为 java.lang.Long

    我有一个代码可以从 MongoDB 读取特定格式的数据 我需要测试一下 为此 我使用要测试的数据创建一个 JSON id ObjectId 57552e32e4b0839ede67e0af serial 574000690 startDat
  • Spring 术语中命令、表单、业务和实体对象之间的区别?

    我试图理解这些对象在松散耦合系统方面的差异 业务对象与实体对象相同吗 我可以使用 MVC 中的业务或实体对象作为我的命令对象吗 命令对象与表单对象相同吗 只是寻找 Spring 术语和用法中对象类型的说明 我在 stackoverflow
  • 在 JavaFX 中拖动未装饰的舞台

    我希望将舞台设置为 未装饰 使其可拖动且可最小化 问题是我找不到这样做的方法 因为我遇到的示例是通过插入到主方法中的方法来实现的 我想通过控制器类中声明的方法来完成此操作 就像我如何使用下面的 WindowClose 方法来完成此操作 这是
  • perl 和 java 正则表达式功能之间有什么区别?

    perl 和 java 在支持哪些正则表达式术语方面有什么区别 这个问题仅涉及正则表达式 并且特别排除了how可以使用正则表达式 即使用正则表达式的可用函数 方法 以及语言之间的语法差异 例如java要求转义反斜杠等 特别令人感兴趣的是 j
  • Java中的OR运算(BitSet.class)

    如何编写一个程序 该程序需要001010101110000100100 011100010001000011000 000000000010000000000100 作为输入 位 输出将是OR其中 3 个 OR 0 0 0 0 1 1 1
  • 链表中的虚拟节点

    问 什么时候使用它们 作业问题 列表中的第一个和最后一个节点 有时用作列表中的第一个和最后一个节点 从未用作列表中的第一个和最后一个节点 维基百科说 哨兵节点是与链接一起使用的专门指定的节点 列表和树作为遍历路径终止符 哨兵节点的作用是 不
  • Java .split("|") 不工作

    我刚刚遇到了一个问题分割法 http docs oracle com javase 6 docs api java lang String html split 28java lang String 29for 字符串不适用于字符 作为一个
  • Python 可以替代 Java 小程序吗?

    除了制作用于物理模拟 如抛射运动 重力等 的教育性 Java 小程序之外 还有其他选择吗 如果你想让它在浏览器中运行 你可以使用PyJamas http pyjs org 这是一个 Python 到 Javascript 的编译器和工具集
  • Drools:为什么是无状态会话?

    Drools 使用会话来存储运行时数据 为此 有两种会话 无状态和有状态 与无状态会话相比 有状态会话允许迭代调用 并且似乎比无状态会话具有所有优势 那么为什么会有无状态会话呢 他们服务的目的是什么 与有状态会话相比 它们的优势是什么 谢谢
  • Java,如何管理线程读取socket(websocket)?

    我有一个 WebSocket 服务器 我的服务器创建一个新线程来处理新连接 该线程一直处于活动状态 直到 websocket 中断 我的问题 对于 1 000 000 个连接 我需要 1 000 000 个线程 我如何通过一个线程处理多个

随机推荐

  • Java 类路径问题

    我有两节课 我的应用程序 Library 该库已被编译为Library class 并且源代码不再可用 我现在正在尝试从源代码编译 MyApplication MyApplication 依赖于库 该库的包名称为 org myCompany
  • 分析来自谷歌文档表单的多重响应字段

    我用 Google Doc 制作的一份调查问卷有一个多重响应集 假设三个可能的问题是 foo bar foobar 允许人们勾选一个或多个答案 在我的谷歌电子表格结果中 我有 answer1 foo answer2 foo bar answ
  • @font-face 用于自定义字体,Chrome 中的字体不平滑

    我有一个 Web 应用程序 它使用 CSS3 的 font face 来嵌入自定义字体 到目前为止 这在 IE 和 Firefox 中都可以完美运行 然而 在 Chrome 中 自定义字体显得像素化且不平滑 下面是 Firefox IE 上
  • IE8 将动态 iframe 内容从缓存重新加载到错误的 iframe 中

    我有一个页面 上面有多个 iframe 每个 iframe 都会调用一些 javascript 动态地将新的 iframe 写入父窗口的文档中 这在首页加载时效果很好 但是 如果在 IE8 及更早版本 中刷新页面 动态生成的 iframe
  • 如何将用户重定向到 ACS 默认登录页面

    我正在使用天蓝色Access Control System ACS 在我的网络应用程序中对来自不同身份提供商的用户进行身份验证 我成功注册了使用 ACS 的申请 现在 我通过从 web config 文件中删除以下内容 删除了 ACS 的完
  • 从文本观察器访问编辑文本

    我正在使用 textWatcher final EditText et EditText findViewById R id editText1 final TextView tv TextView findViewById R id te
  • 监视文件更改时打开太多文件

    我正在为 iPad 开发一个基于文档浏览器的应用程序 我一直在使用SKQueue https github com daniel pedersen SKQueue监视文件的更改 以确保当用户在文档浏览器中执行操作时其元数据保持最新 启动监控
  • 每次更新路由时调用一个函数 vue.js

    我的应用程序中集成了对讲机 我需要拨打电话window Intercom update 每次我的网址改变时 我知道我可以添加它mounted 但我宁愿不修改我的所有组件并直接使用导航守卫 https router vuejs org en
  • 如何使无头浏览器可见 Python

    我通过设置以下参数创建了一个无头 webdriver chrome 浏览器 chrome options add argument headless 然后使用以下命令打开浏览器 driver webdriver Chrome executa
  • 更新jar中的类,指定目录吗?

    我想更新 jar 中的 class 文件 class 文件位于 jar 的文件夹中 如果我想更新它 我需要指定它所在的具体路径名吗 Do I do jar uf myJar jar myFolder myClass class or jus
  • C语言中的stdin是什么?

    我想构建自己的 scanf 函数 基本思想是将数据从一个内存地址保存到另一个内存地址 什么是标准输入 它是像 000ffaa 这样的内存地址吗 如果它是一个内存地址 那么它是什么 这样我就可以构建自己的 scanf 函数 谢谢 No std
  • 如何使用 Double 函数获取空值? [复制]

    这个问题在这里已经有答案了 可能的重复 从 C 创建 Excel XLS 和 XLSX 文件 https stackoverflow com questions 151005 create excel xls and xlsx file f
  • 检查 R 向量中的序列

    我正在寻找一个函数或操作 如果我有 A lt c 1 2 3 4 5 and B lt c 1 2 3 and C lt c 2 1 检查 A 是否包含 B 时得到 TRUE 检查 A 是否包含 C 时得到 FALSE 基本上 相当于 in
  • watchman 让 fsnotify 虚假地检测文件更改

    我正在使用 Git 的 watchmancore fsmonitor环境 我正在运行另一个工具 它使用 fsnotify 来检测文件更改并运行构建 watchman 正在做的事情是让 fsnotify 认为文件正在更改 而实际上文件并未更改
  • 用php返回json数据

    我想返回 json 数据 但我的代码不起作用 我没有收到任何错误消息 我有index php ajax php 和db php Db php 正在运行 但我的ajax代码不起作用 我的错误在哪里 索引 php div style width
  • 如何在 VS Code 的“输出”面板中搜索(“Ctrl+F”)?

    我曾经能够能够Ctrl F搜索登录的内容VS Code 现在 由于某种未知的原因 当我输入时搜索栏不会显示Ctrl F 我是版本1 57 这是目前最新的 This question https stackoverflow com quest
  • 原始异常文本为:“QuerySet”对象没有属性“weight”

    我遇到了异常尝试获取字段值时出现 AttributeErrorweight在串行器上WeightHistorySerializer 序列化器字段可能命名不正确并且与序列化器上的任何属性或键不匹配QuerySet实例 原始异常文本是 Quer
  • LISP:如何从一个文件中读取内容并将其写入另一个文件中?

    我想编写一个函数 该函数以两个文件的名称作为参数 并将内容从第一个文件复制到第二个文件 到目前为止 我编写了一个从文件读取的函数 defun readFile name let in open name format t a read li
  • jQuery:如何在不同字符串中添加
    换行符以分隔 2 中的句子?

    我有不同的句子 其中都有双引号 例如 h3 class myClass Sentence one ends like this h3 h3 class myClass Sentence two ends like that h3 h3 cl
  • JVM 可以检索已通过附加 API 加载到其中的代理列表吗?

    是否可以通过 Java 1 6 Attach api 获取加载到当前 JVM 中的代理列表 如果是这样怎么办 启动时加载的代理可以通过 RuntimeMXBean 确定 但我看不到如何处理启动后添加的代理 这个问题类似于如何查找正在运行的