当前位置:   article > 正文

RuntimeMXBean getName 耗时长_managementfactory.getruntimemxbean().getname()

managementfactory.getruntimemxbean().getname()

程序在启动时发现耗时很长,通过jstack 进程号 发现卡在获取进程名上,用了30秒

RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();

runtimeMXBean.getName();

getName用了30秒

 

于是写了一个测试类放在服务器上执行,并在此jstack 进程号获取堆栈信息

  1. public class Test {
  2. public static void main(String[] args) {
  3. System.out.print("start");
  4. RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
  5. System.out.print("name:"+runtimeMXBean.getName());
  6. }
  7. }

发现卡在at java.net.Inet6AddressImpl.lookupAllHostAddr 这句

"main" #1 prio=5 os_prio=0 tid=0x00002b2450009800 nid=0x1a2c9 runnable [0x00002b244ca75000]
   java.lang.Thread.State: RUNNABLE
        at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
        at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929)
        at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324)
        at java.net.InetAddress.getLocalHost(InetAddress.java:1501)
        - locked <0x0000000580163720> (a java.lang.Object)
        at sun.management.VMManagementImpl.getVmId(VMManagementImpl.java:140)
        at sun.management.RuntimeImpl.getName(RuntimeImpl.java:59)
        at test.Test.main(Test.java:11)

 

猜想是和网络主机设置有关

最后发现 cat /etc/hosts 中设置的ip对应的主机名和 /etc/sysconfig/network 中设置的主机名不一致导致的,修改为一致就可以了

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/372231
推荐阅读
相关标签
  

闽ICP备14008679号