java 虚拟机假死

wgd81685 2015-07-31 06:40:18
现在在做的项目,有十几个线程在不断运行。因为项目需要跟多个硬件进行通信,每秒钟都有日志记录。但在分析日志时发现,有几秒甚至几十秒的时间没有做任何记录。感觉在这段时间内,似乎虚拟机处于假死状态,这种情况完全没有遇到过,求大神帮忙解答为什么会出现这种问题!!!!!
...全文
246 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
winteryoung84 2015-08-01
  • 打赏
  • 举报
回复
实时性要求比较高?那你应该注意 jvm 的 gc 算法有“stop the whole world”的问题。也就是内存完全不够的时候会触发 full gc,这时整个虚机的操作都暂停,jvm 全力回收内存,然后再再恢复。这点在所有带虚机的语言上都有。java 7 开始自带的 g1 gc 算法号称准实时,卡顿时间很小,不过貌似有些问题。你可以测一下 java 8 的 g1 gc 看看。搜索 jvm, gc 相关的资料有很多。
wgd81685 2015-07-31
  • 打赏
  • 举报
回复
引用 1楼rumlee 的回复:
是不是程序所有线程都因为某个外部硬件而挂起了。
不同线程对应不同的硬件
wgd81685 2015-07-31
  • 打赏
  • 举报
回复
补充一下,初步分析,可能是内存不足的原因。因为机器本身的限制,最大分配内存只有512m,如果内存被全部占用的话是否会导致这个问题?
wgd81685 2015-07-31
  • 打赏
  • 举报
回复
引用 2楼日知己所无 的回复:
线程之间有锁吗?
线程之间没有锁
日知己所无 2015-07-31
  • 打赏
  • 举报
回复
线程之间有锁吗?
rumlee 2015-07-31
  • 打赏
  • 举报
回复
是不是程序所有线程都因为某个外部硬件而挂起了。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧