本文编写时,公司代码已被重构过,所以无法彻底重现当时环境。文章配图之间也已经过了多次 thread dump,所以 PID 与 TID 无法对上号。

最近公司一个新项目在测试环境运行的时候出现长期 CPU 占用 100% 的情况。经过检查,MySQL 和 SQL Server 均无慢查询以及长时间 IO 占用,最后将注意力集中在应用本身。

由于 Windows 自带的 Task Manager 功能太弱,请选择 Sysinternals 套件内的 Process Explorer 作为监测工具。

首先使用 Process Explorer 检查高占用的进程,记下 PID(Process ID),随后双击打开 Threads 选项卡

由图可知,TID 为 22172 的线程消耗大量的 CPU 时间。因而可以初步锁定问题所在。

接下来请出 jstack, 他是 jdk 自带的线程堆栈分析工具,可以查看或导出 Java 应用程序中线程堆栈信息。

输入 jstack -l <PID> 输出 Thread Dump

如有必要,可将 Dump 导出,如 jstack -l <PID> > C:\trace.log

在 thread dump 中每个线程都有一个 nid, 将上述高占用的 TID 转成十六进制后, 找到与 dump 相对应的 nid。便是该线程的工作详情了。

从图上我们可以看出,当前正在跑的 MainThread.java 的是第 36 行

得到了 dump 详情以后,就可以着手在对应的代码中找错优化了。

本文摘自《一個人要像一支隊伍》

年少的時候,我覺得孤單是很酷的一件事情。長大以後,我覺得孤單是很淒涼的一件事。現在,我覺得孤單不是一件事。至少,努力不讓它成為一件事。

有時候,人所需要的是真正的絕望。

真正的絕望跟痛苦、悲傷沒有什麼關係。它讓人心平氣和,讓你意識到你不能依靠別人,任何人,得到快樂。它讓你謙卑,因為所有別人能帶給你的,都成了驚喜。它讓你只能返回自己的內心。每個人的內心都有不同的自我,他們彼此可以對話。你還可以學習觀察微小事物的變化,天氣、季節、超市裡的蔬菜價格、街上漂亮的小孩,你知道,萬事萬物都有它值得探究的秘密,只要你真正-我是說真正-打量它。

當然還有書、報紙、電影電視、網絡、DVD、CD,那裡面有他人的生活、關於這個世界的道理、音樂的美、知識的魔術、愛的可能性、令人憤怒的政治家.. .我們九九八十一生都不可能窮盡這些道理、美、愛、魔術的一個小指甲蓋,怎麼還能抱怨生活給予我們的太少。

絕望不是氣餒,它只是“命運的歸命運,自己的歸自己”這樣一種事實求是的態度。

就是說,它是自由。

以前一個朋友寫過一首詩,叫《一個人要像一支隊伍》。我想像文革中的顧準、獄中的楊小凱、在文學圈之外寫作的王小波,就是這樣的人。懷才不遇,逆水行舟,一個人就像一支隊伍,對著自己的頭腦和心靈招兵買馬,不氣餒,有召喚,愛自由。

我想自己終究是幸運的,不僅僅因為那些外在的所得,而且因為我還挺結實的。總是被打得七零八落,但總還能在上帝他老人家數到“九”之前重新站起來,再看到眼前那個大海時,還是一樣興奮,歡天喜地地跳進去。在遼闊的世界面前,一個人有多謙卑,他就會有多快樂。當羅素說知識、愛、同情心是他生活的動力時,我覺得簡直可以和這個風流成性的老不死稱兄道弟。

因為這種幸運,我原諒自己經受的挫折、孤單、原諒自己的敏感、焦慮和神經質,原諒上帝他老人家讓X不喜歡我,讓我不喜歡Y,讓那麼多人長得比我美,或者比我智慧,原諒他讓我變老變胖。因為他把世界上最美好的品質給了我:不氣餒,有召喚,愛自由。

如果你還在為自己孤單寂寞懷才不遇舉世皆濁我獨醒而深深嘆息的話,那麼讓我告訴你,你買不到那個彩票的,別再把你時間的積蓄兩塊、兩塊地花出去,回到你的內心,尋找你自己,與心靈深處的他、他們一起出發去旅行。如果你有足夠的好奇心,你可以足不出戶而周遊世界,身無分文而腰纏萬貫。人生若有知己相伴固然妙不可言,但那可遇而不可求,真的,也許既不可遇又不可求,可求的只有你自己,你要俯下身去,朝著幽暗深處的自己伸出手去。