如何减少来自VisualVM的堆使用影响?
我试图优化我的应用程序的内存使用情况。 不幸的是,使用-Dcom.sun.management.jmxremote运行我的应用程序并通过VisualVM连接它对堆的使用有相当大的影响。 起初我认为这是我的应用程序问题,直到我编写了一个非常简单的程序来确认它确实是JMX的开销。 以下是该活动的图像。
读完这些之后,我明白这是由于VisualVM通过连续轮询连接的应用程序来检索数据的方式。 我通过查看VisualVM的内存采样器来证实这一点。 RMI TCP连接(n)线程分配180kb /秒。
我的问题是,有没有办法减少VisualVM的堆使用影响? 因为我对堆信息感兴趣,所以更改轮询间隔可能不太可取。 如果这是不可能的,我们可以排除用于VisualVM的数据吗? 至少我想更关注我的应用程序。
运行代码
Object object = new Object();
synchronized (object) {
object.wait();
}
VisualVM的堆监视器活动
最简单的做法是减少轮询间隔。 影响与获取数据的速率成正比。
我所做的是使用YourKit,它在本机内存中执行所有操作,因此对堆没有影响。
链接地址: http://www.djcxy.com/p/14039.html