Java进程在短时间内挂起

时间:2019-02-11 03:29:51

标签: java vmware

我在VMWare Linux guest虚拟机上运行我的应用程序,但运行不正常。

我编写了另一个简单的计数器,以在同一来宾上运行以进行测试。 (每0.5秒添加计数器)

应用程序停止时,计数器工作正常,

但是在应用程序运行时(显示的时间和数字)不久就挂起了。

  10:21:24.386 : 166
  10:21:25.154 : 167
  10:21:25.971 : 168
  10:21:25.971 : 169 <--
  10:21:26.957 : 170
  10:21:26.957 : 171 <--
  10:21:27.848 : 172
  10:21:27.885 : 173
  10:21:28.776 : 174
  10:21:28.884 : 175
  10:21:30.374 : 176
  10:21:30.374 : 177 <--
  10:21:30.379 : 178
  10:21:31.264 : 179
  10:21:31.380 : 180
  10:21:32.155 : 181
  10:21:32.933 : 182
  10:21:32.933 : 183 <--

计数器代码如下所示,但我认为没有问题

    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
    ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

    scheduler.scheduleAtFixedRate(new Runnable(){
        int i=0;
        @Override
        public void run() {
            Calendar cal = Calendar.getInstance();
            System.out.println(sdf.format(cal.getTime()) + " : " + i);
            i++;
        }
    }, 500, 500, TimeUnit.MILLISECONDS);

这是应用程序运行时的最佳结果

top - 11:02:49 up 20:49,  5 users,  load average: 12.87, 14.66, 13.22
Tasks: 196 total,   5 running, 190 sleeping,   0 stopped,   1 zombie
%Cpu0  : 77.3 us, 20.5 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  2.3 si,      0.0 st
%Cpu1  : 82.4 us, 16.5 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  1.1 si,  0.0 st
KiB Mem : 16267652 total,  7639820 free,  7309136 used,  1318696 buff/cache
KiB Swap:  8257532 total,  8257532 free,        0 used.  8588648 avail Mem

似乎我的应用程序资源不足并导致JVM无法正常工作?

除了向来宾添加更多资源外,还有什么方法可以减少资源消耗?

使用jmap -histo查找最常用的对象并检查它吗?

她的环境信息

java版本“ 1.8.0_181”

CentOS Linux版本7.5.1804(核心)

VMware 6.0

0 个答案:

没有答案