java - Java进程在短时间内挂起
问题描述
我在 VMWare Linux 来宾上运行我的应用程序,但效果不佳。
我编写了另一个简单的计数器来在同一个客人上运行以进行测试。(每 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 无法正常工作?
除了给guest增加更多的资源,有没有什么办法可以减少资源消耗?
使用 jmap -histo 查找最常用的对象并检查它?
她的环境信息
java版本“1.8.0_181”
CentOS Linux 版本 7.5.1804(核心)
VMware 6.0
解决方案
推荐阅读
- python - 如何读取 .txt 文件,并在 python 中每一行的特定位置/索引后添加空格
- django - 在所有用户的注册模型显示列表中(外键)
- list - 编写基本的 haskell 函数,获取 Int x 并在 [1..x] 上执行函数
- python - Django -- 如何将表单提交视图调用到数据上传视图
- python - 如何在不重新输入的情况下调整布尔掩码?
- python - 在不实例化任何对象的情况下使用实例方法可能是危险的还是有用的?
- android - 在recyclerView中一屏显示多个项目
- reactjs - 当我在 getInitialProps 中调度时,下一个 js 应用程序不会将响应发送回浏览器
- python - 在 Python 中重新分配装饰器中的参数
- css - 如何用 css 创建一个“梨形”形状