码迷,mamicode.com
首页 > 编程语言 > 详细

linux查看线程状态--jstack

时间:2015-03-02 11:27:03      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:linux查看线程状态   jstack   linux   

    在linux下运行多线程程序,想查看各个线程的运行情况,怎么办?

    Linux下查看某进程的线程状态:

    1.jps或top或ps -ef|grep java,找到需要的进程pid;

    2.jstack pid,查看pid的所有线程状态信息;


下面为一个示例:进程6798启动了5个线程,其他两个正在跑,另外三个进入了睡眠状态。

[root@stormnimbus topology]# jstack 6798
2015-03-02 09:49:05
Full thread dump Java HotSpot(TM) 64-Bit Server VM (17.1-b03 mixed mode):
"pool-1-thread-5" prio=10 tid=0x00007f956c0cb000 nid=0x1a9e runnable [0x00007f95269a9000]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at oracle.net.ns.Packet.receive(Unknown Source)
    at oracle.net.ns.DataPacket.receive(Unknown Source)
    at oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
    at oracle.net.ns.NetInputStream.read(Unknown Source)
    at oracle.net.ns.NetInputStream.read(Unknown Source)
    at oracle.net.ns.NetInputStream.read(Unknown Source)
    at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:979)
    at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:951)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:435)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:182)
    at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatement.java:630)
    at oracle.jdbc.driver.OracleStatement.execute_maybe_describe(OracleStatement.java:961)
    at oracle.jdbc.driver.T4CPreparedStatement.execute_maybe_describe(T4CPreparedStatement.java:532)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1037)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2905)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:2946)
    - locked <0x00007f9564b03cf0> (a oracle.jdbc.driver.T4CPreparedStatement)
    - locked <0x00007f95527be288> (a oracle.jdbc.driver.T4CConnection)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
    at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
    at org.hibernate.loader.Loader.getResultSet(Loader.java:1778)
    at org.hibernate.loader.Loader.doQuery(Loader.java:662)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
    at org.hibernate.loader.Loader.doList(Loader.java:2211)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
    at org.hibernate.loader.Loader.list(Loader.java:2090)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
    at com.hc360.storm.dao.BaseDao.query(BaseDao.java:753)
    at com.hc360.storm.dao.BaseDao.query(BaseDao.java:676)
    at com.hc360.storm.dao.CompassProdDao.resetFreeBusinComplete(CompassProdDao.java:80)
    at com.hc360.storm.service.CompassManage.resetBusinCompass(CompassManage.java:621)
    at com.hc360.storm.service.CompassManage.saveBusinInfo(CompassManage.java:456)
    at com.hc360.storm.service.CompassManage.initBusinScore(CompassManage.java:215)
    at com.hc360.storm.service.CompassManage.initUserBusinScore(CompassManage.java:270)
    at sun.reflect.GeneratedMethodAccessor341.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.hc360.storm.service.BusinessInvocationHandler.invoke(BusinessInvocationHandler.java:42)
    at $Proxy1.initUserBusinScore(Unknown Source)
    at com.hc360.storm.newinit.BatchInitUser.initOneUser(BatchInitUser.java:59)
    at com.hc360.storm.newinit.InitUserTask.run(BatchInitUser.java:91)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
"pool-1-thread-4" prio=10 tid=0x00007f956c0c9800 nid=0x1a9d waiting on condition [0x00007f9526aab000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at com.hc360.storm.newinit.InitUserTask.run(BatchInitUser.java:81)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
"pool-1-thread-3" prio=10 tid=0x00007f956c0c8000 nid=0x1a9c waiting on condition [0x00007f9526bac000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at com.hc360.storm.newinit.InitUserTask.run(BatchInitUser.java:81)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
"pool-1-thread-2" prio=10 tid=0x00007f956c0c6800 nid=0x1a9b waiting on condition [0x00007f9526cad000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at com.hc360.storm.newinit.InitUserTask.run(BatchInitUser.java:81)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
"pool-1-thread-1" prio=10 tid=0x00007f956c0c4800 nid=0x1a9a runnable [0x00007f9526dad000]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at oracle.net.ns.Packet.receive(Unknown Source)
    at oracle.net.ns.DataPacket.receive(Unknown Source)
    at oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
    at oracle.net.ns.NetInputStream.read(Unknown Source)
    at oracle.net.ns.NetInputStream.read(Unknown Source)
    at oracle.net.ns.NetInputStream.read(Unknown Source)
    at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:979)
    at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:951)
    at oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:100)
    at oracle.jdbc.driver.T4CConnection.do_rollback(T4CConnection.java:474)
    - locked <0x00007f9552188c00> (a oracle.jdbc.driver.T4CConnection)
    at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:1034)
    - locked <0x00007f9552188c00> (a oracle.jdbc.driver.T4CConnection)
    at com.mchange.v2.c3p0.impl.C3P0ImplUtils.resetTxnState(C3P0ImplUtils.java:275)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.reset(NewPooledConnection.java:388)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnection(NewPooledConnection.java:362)
    - locked <0x00007f9552188b70> (a com.mchange.v2.c3p0.impl.NewPooledConnection)
    at com.mchange.v2.c3p0.impl.NewProxyConnection.close(NewProxyConnection.java:1246)
    - locked <0x00007f9564a6cbd8> (a com.mchange.v2.c3p0.impl.NewProxyConnection)
    at org.hibernate.connection.C3P0ConnectionProvider.closeConnection(C3P0ConnectionProvider.java:70)
    at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:449)
    at org.hibernate.jdbc.ConnectionManager.aggressiveRelease(ConnectionManager.java:404)
    at org.hibernate.jdbc.ConnectionManager.afterTransaction(ConnectionManager.java:291)
    at org.hibernate.jdbc.JDBCContext.afterTransactionCompletion(JDBCContext.java:221)
    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:119)
    at com.hc360.mmt.db.dao.util.MmtSessionFactory.commit(MmtSessionFactory.java:164)
    at com.hc360.storm.dao.BaseDao.commit(BaseDao.java:1774)
    at com.hc360.storm.dao.BaseDao.update(BaseDao.java:418)
    at com.hc360.storm.dao.BaseDao.update(BaseDao.java:372)
    at com.hc360.storm.dao.CompassProdDao.resetFreeBusinComplete(CompassProdDao.java:100)
    at com.hc360.storm.service.CompassManage.resetBusinCompass(CompassManage.java:621)
    at com.hc360.storm.service.CompassManage.saveBusinInfo(CompassManage.java:456)
    at com.hc360.storm.service.CompassManage.initBusinScore(CompassManage.java:215)
    at com.hc360.storm.service.CompassManage.initUserBusinScore(CompassManage.java:270)
    at sun.reflect.GeneratedMethodAccessor341.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.hc360.storm.service.BusinessInvocationHandler.invoke(BusinessInvocationHandler.java:42)
    at $Proxy1.initUserBusinScore(Unknown Source)
    at com.hc360.storm.newinit.BatchInitUser.initOneUser(BatchInitUser.java:59)
    at com.hc360.storm.newinit.InitUserTask.run(BatchInitUser.java:91)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)


linux查看线程状态--jstack

标签:linux查看线程状态   jstack   linux   

原文地址:http://zlfwmm.blog.51cto.com/5892198/1616388

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!