qq_38080430
ClownsAndTears
采纳率50%
2017-08-15 07:57

Java程序,占用大量cpu不释放问题。

已采纳

linux服务器共12核,一不小心就是1个核占满,还不带释放的。隔几天一看,10个核没了。导致服务器运行超慢。于是乎,我就在往上查呀查,终于查到点眉目。
我先用命令:top 找到占着大量cpu的进程。
top出来的结果
然后用命令:jstack 39819 > cpu39819.log
我再用命令:top -p 39819 -H 得到一大片占用率是99的进程。
然后我再用:printf "%x\n" 85376 一个一个打印出来得到【14d80】等等结果...
然后编辑 cpu39819.log 查找关于【14d80】等等有关的信息。得到以下东西:
其中一个
第二个
基本大致就是这两处出了问题。开心了,终于找到了问题,然后不看不知道,一看吓一跳。反正我懵了。
这是图一跟过去的代码块。
图一跟过去的代码
这是图二跟过去的代码块。
图二跟过去的代码

这个Element我用的是org.jsoup.nodes.Element。然后我在一步一步似爪牙的跟。
底层代码
底层代码

我不知道哪出了问题?为什么这简单是.text()方法和.html()方法会占用这么大的cpu?还不会释放。求大神。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • oyljerry oyljerry 4年前

    一个是这个数据量是不是很大,然后就是元素个数是否很多,这样可能会导致读取处理的时候消耗很多CPU

    点赞 3 评论 复制链接分享
  • u012723767 心语咚咚 4年前

    什么服务器这么屌,12核心,干啥用的。

    点赞 评论 复制链接分享