在生产环境(Linux)有什么办法知道当前某个线程的运行情况,比如是不是挂住了,是不是吃了好多cpu和内存。谢谢 修改 个人觉得:在不添加代码的情况下,一个简单的做法就是打开JVM的堆存储快照,看看应用创建有哪些线程,那些地方占用了内存等等信息... 以下是针对tomcat上的应用的. 其他的java程序, 只要你能触发他的thread dump并且拿到结果, 也是一样. 1. ps -ef | grep java 找到你的java程序的进程id, 定位 pid 2. top -Hp $pid shift+t 查看耗cpu时间最多的几个线程, 记录下线程的id 3. 把上诉线程ID转换成16禁止小写 比如 : 0x12ef 4. kill -3 $pid 触发tomcat的thread dump 5. 找到tomcat的catalin.out 日志, 把 上面几个线程对应的代码段拿出来. DONE. jiacheo.org/blog... 冯雪峰,攻城师一枚,会点python,偶尔弄弄数据
|