我在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