jstatd,VisualVM使用和报错解决:Could not create remote object--java.security.AccessControlException

在使用jstatd和VisualVM进行远程JVM监控时遇到权限错误,通过查阅资料并修改Java安全策略文件解决了AccessControlException。问题涉及到Java 9+版本的变化,配置文件需要适配Java 11。最终,通过指定网络参数成功实现远程连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在使用jstatdVisualVM来查看Java程序运行的怎样,结果报错了:

-> # jstatd
Could not create remote object
java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")
	at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
	at java.base/java.security.AccessController.checkPermission(AccessController.java:897)
	at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322)
	at java.base/java.lang.System.setProperty(System.java:888)
	at jdk.jstatd/sun.tools.jstatd.Jstatd.main(Jstatd.java:140)

然后官方资料说要配置权限:jstatd(1) — openjdk-11-jdk-headless — Debian testing — Debian Manpages

-> # cat jstatd-all.policy
grant codebase "file:${jav
Java中,可以使用`jstatd`工具以及JMX(Java Management Extensions)来模拟VisualVM监控垃圾回收(Garbage Collection, GC)信息的过程。`jstatd`是一个轻量级的服务,它监听来自其他应用程序的JMX连接请求,并允许它们访问远程管理数据。 首先,你需要启动一个`jstatd`服务: ```bash jstatd -J-Djava.security.policy=conf/jmxremote.access ``` 这里 `-J-Djava.security.policy=conf/jmxremote.access` 设置了JMX的安全策略文件,确保只有授权的应用程序能连接到`jstatd`。 然后,在你的Java应用中,启用JMX并配置`ManagementFactory`来暴露GC相关的MBeans (Managed Beans): ```java import javax.management.MBeanServer; import javax.management.ObjectName; import com.sun.management.GcInfo; // ... MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); ObjectName name = new ObjectName("java.lang:type=GarbageCollector"); GcInfo[] gcInfos = (GcInfo[]) mbs.getAttribute(name, "CollectionCount"); for (GcInfo info : gcInfos) { // 获取处理GC信息,如:collection time、duration等 System.out.println("Collection Time: " + info.collectionTime); System.out.println("Duration: " + info.duration); } ``` 在这个例子中,我们从MBean服务器获取了所有已知垃圾收集器的统计信息,包括每次垃圾收集的时间持续时间。 最后,如果你想模拟VisualVM的行为,你可以编写一个客户端程序来定期发送请求到`jstatd`获取最新的GC信息,并以类似VisualVM的界面展示给用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值