我的java占用cpu太高了有时候%200--%300多
本帖最后由 rdcwayx 于 2014-12-24 19:56 编辑我用了eclipse,下面是我java线程栈,问题是啥呀,不会分析呀,还请哥哥们指点?2014-12-22 09:49:17
Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.51-b03 mixed mode):
"Attach Listener" daemon prio=10 tid=0x00007fe39c001000 nid=0x10fc waiting on condition
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
" - Idle Thread" daemon prio=10 tid=0x00007fe378004000 nid=0x10e9 in Object.wait()
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e5b51c40> (a org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor)
at java.lang.Object.wait(Object.java:503)
at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:106)
- locked <0x00000000e5b51c40> (a org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor)
Locked ownable synchronizers:
- None
"Worker-9" prio=10 tid=0x00007fe350007000 nid=0x10e8 in Object.wait()
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e0c336c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <0x00000000e0c336c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)
Locked ownable synchronizers:
- None
"Worker-8" prio=10 tid=0x00007fe344001000 nid=0x10e7 in Object.wait()
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e0c336c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <0x00000000e0c336c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)
Locked ownable synchronizers:
- None
"org.eclipse.wst.sse.ui.internal.reconcile.StructuredRegionProcessor" daemon prio=10 tid=0x00007fe3c9721000 nid=0x10e2 in Object.wait()
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e31e2b50> (a java.util.Collections$SynchronizedRandomAccessList)
at org.eclipse.wst.sse.ui.internal.reconcile.DirtyRegionProcessor$BackgroundThread.run(DirtyRegionProcessor.java:667)
- locked <0x00000000e31e2b50> (a java.util.Collections$SynchronizedRandomAccessList)
Locked ownable synchronizers:
- None
"H2 Log Writer MODEL" daemon prio=10 tid=0x00007fe3481cf000 nid=0x10e1 in Object.wait()
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e37d3410> (a org.h2.store.WriterThread)
at org.h2.store.WriterThread.run(WriterThread.java:104)
- locked <0x00000000e37d3410> (a org.h2.store.WriterThread)
at java.lang.Thread.run(Thread.java:744)
Locked ownable synchronizers:
- None
"H2 File Lock Watchdog /home/chenzk/eclipse/.metadata/.plugins/org.eclipse.dltk.core.index.sql.h2/model.lock.db" daemon prio=10 tid=0x00007fe348078000 nid=0x10de waiting on condition
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at org.h2.store.FileLock.run(FileLock.java:492)
at java.lang.Thread.run(Thread.java:744)
Locked ownable synchronizers:
- None
"Worker-5" prio=10 tid=0x00007fe340001800 nid=0x10dc in Object.wait()
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e0c336c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <0x00000000e0c336c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)
Locked ownable synchronizers:
- None
"Worker-4" prio=10 tid=0x00007fe34c007800 nid=0x10db in Object.wait()
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e0c336c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <0x00000000e0c336c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)
Locked ownable synchronizers:
- None
"JavaScript indexing" daemon prio=10 tid=0x00007fe3c9409000 nid=0x10d9 in Object.wait()
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e2aa0128> (a org.eclipse.wst.jsdt.internal.core.search.indexing.IndexManager)
at java.lang.Object.wait(Object.java:503)
at org.eclipse.wst.jsdt.internal.core.search.processing.JobManager.run(JobManager.java:370)
- locked <0x00000000e2aa0128> (a org.eclipse.wst.jsdt.internal.core.search.indexing.IndexManager)
at java.lang.Thread.run(Thread.java:744)
Locked ownable synchronizers:
- None
"DLTK indexing" daemon prio=10 tid=0x00007fe3c92fa000 nid=0x10d8 in Object.wait()
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e278f028> (a org.eclipse.dltk.core.search.indexing.IndexManager)
at java.lang.Object.wait(Object.java:503)
at org.eclipse.dltk.internal.core.search.processing.JobManager.run(JobManager.java:445)
- locked <0x00000000e278f028> (a org.eclipse.dltk.core.search.indexing.IndexManager)
at java.lang.Thread.run(Thread.java:744)
Locked ownable synchronizers:
- None
"EventAdmin Async Event Dispatcher Thread" daemon prio=10 tid=0x00007fe3c9245000 nid=0x10d7 in Object.wait()
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e2d26e88> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at java.lang.Object.wait(Object.java:503)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
- locked <0x00000000e2d26e88> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)
Locked ownable synchronizers:
- None
"Worker-2" prio=10 tid=0x00007fe3c9228800 nid=0x10d6 in Object.wait()
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e0c336c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <0x00000000e0c336c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)
Locked ownable synchronizers:
- None
"Bundle File Closer" daemon prio=10 tid=0x00007fe3c8e6b800 nid=0x10d5 in Object.wait()
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e1b85730> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at java.lang.Object.wait(Object.java:503)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
- locked <0x00000000e1b85730> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)
Locked ownable synchronizers:
- None
"Worker-1" prio=10 tid=0x00007fe360005000 nid=0x10d3 in Object.wait()
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e0c336c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <0x00000000e0c336c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)
Locked ownable synchronizers:
- None
"EMF Reference Cleaner" daemon prio=10 tid=0x00007fe37c045000 nid=0x10ca in Object.wait()
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e081f630> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
- locked <0x00000000e081f630> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at org.eclipse.emf.common.util.CommonUtil$1ReferenceClearingQueuePollingThread.run(CommonUtil.java:70)
Locked ownable synchronizers:
- None
"Worker-JM" prio=10 tid=0x00007fe380100800 nid=0x10c8 in Object.wait()
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e0c339d8> (a java.util.ArrayList)
at org.eclipse.core.internal.jobs.InternalWorker.run(InternalWorker.java:59)
- locked <0x00000000e0c339d8> (a java.util.ArrayList)
Locked ownable synchronizers:
- None
" - Main Queue Handler" daemon prio=10 tid=0x00007fe38003d800 nid=0x10c7 in Object.wait()
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e081f890> (a java.lang.Object)
at org.eclipse.equinox.internal.util.impl.tpt.timer.TimerImpl.run(TimerImpl.java:141)
- locked <0x00000000e081f890> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:744)
Locked ownable synchronizers:
- None
"Start Level: Equinox Container: 0093e07c-7c89-0014-13c5-9530b0afb40d" daemon prio=10 tid=0x00007fe3c84a3000 nid=0x10c5 in Object.wait()
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e0b6f2b8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at java.lang.Object.wait(Object.java:503)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
- locked <0x00000000e0b6f2b8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)
Locked ownable synchronizers:
- None
"Framework Event Dispatcher: Equinox Container: 0093e07c-7c89-0014-13c5-9530b0afb40d" daemon prio=10 tid=0x00007fe3c84a2800 nid=0x10c4 in Object.wait()
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e081f9f8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at java.lang.Object.wait(Object.java:503)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
- locked <0x00000000e081f9f8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)
Locked ownable synchronizers:
- None
"Active Thread: Equinox Container: 0093e07c-7c89-0014-13c5-9530b0afb40d" prio=10 tid=0x00007fe3c845e000 nid=0x10c3 waiting on condition
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for<0x00000000e071b180> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1090)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:807)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Locked ownable synchronizers:
- None
"Service Thread" daemon prio=10 tid=0x00007fe3c815d800 nid=0x10c1 runnable
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"C2 CompilerThread1" daemon prio=10 tid=0x00007fe3c815b000 nid=0x10c0 waiting on condition
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"C2 CompilerThread0" daemon prio=10 tid=0x00007fe3c8158000 nid=0x10bf waiting on condition
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"Signal Dispatcher" daemon prio=10 tid=0x00007fe3c814e000 nid=0x10be runnable
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"Finalizer" daemon prio=10 tid=0x00007fe3c8137000 nid=0x10bd in Object.wait()
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e05f76c0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
- locked <0x00000000e05f76c0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:189)
Locked ownable synchronizers:
- None
"Reference Handler" daemon prio=10 tid=0x00007fe3c8133000 nid=0x10bc in Object.wait()
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e05f7208> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:503)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
- locked <0x00000000e05f7208> (a java.lang.ref.Reference$Lock)
Locked ownable synchronizers:
- None
"main" prio=10 tid=0x00007fe3c800a000 nid=0x10b6 runnable
java.lang.Thread.State: RUNNABLE
at org.eclipse.swt.internal.gtk.OS.Call(Native Method)
at org.eclipse.swt.widgets.Display.sleep(Display.java:4326)
at org.eclipse.ui.application.WorkbenchAdvisor.eventLoopIdle(WorkbenchAdvisor.java:368)
at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.eventLoopIdle(IDEWorkbenchAdvisor.java:918)
at org.eclipse.ui.internal.Workbench$3.eventLoopIdle(Workbench.java:498)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1155)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:236)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Locked ownable synchronizers:
- None
"VM Thread" prio=10 tid=0x00007fe3c8131000 nid=0x10bb runnable
"GC task thread#0 (ParallelGC)" prio=10 tid=0x00007fe3c8020000 nid=0x10b7 runnable
"GC task thread#1 (ParallelGC)" prio=10 tid=0x00007fe3c8022000 nid=0x10b8 runnable
"GC task thread#2 (ParallelGC)" prio=10 tid=0x00007fe3c8023800 nid=0x10b9 runnable
"GC task thread#3 (ParallelGC)" prio=10 tid=0x00007fe3c8025800 nid=0x10ba runnable
"VM Periodic Task Thread" prio=10 tid=0x00007fe3c8168000 nid=0x10c2 waiting on condition
JNI global references: 710下面是使用top命令找到耗cpu的线程,看了2次#top -H -p 4277
PID USER PRNI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4278 chenzk 20 0 2736084 16999221836 S 86.04.5 0:03.95 java
4287 chenzk 20 0 2736084 16999221836 S 72.84.5 0:02.49 java
4279 chenzk 20 0 2736084 16999221836 R 19.84.5 0:00.16 java
4281 chenzk 20 0 2736084 16999221836 R 19.84.5 0:00.16 java
4282 chenzk 20 0 2736084 16999221836 R 19.84.5 0:00.13 java
4288 chenzk 20 0 2736084 16999221836 S 19.84.5 0:01.75 java
4280 chenzk 20 0 2736084 16999221836 R 13.24.5 0:00.15 java
4277 chenzk 20 0 2736084 16999221836 S0.04.5 0:00.00 java
4283 chenzk 20 0 2736084 16999221836 S0.04.5 0:00.04 java
PID USER PRNI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4278 chenzk 20 0 3218076 35493227428 R 85.99.4 0:09.33 java
4287 chenzk 20 0 3218076 35493227428 S 79.39.4 0:05.98 java
4288 chenzk 20 0 3218076 35493227428 S 66.09.4 0:04.70 java
4312 chenzk 20 0 3218076 35493227428 D 13.29.4 0:01.09 java
4292 chenzk 20 0 3218076 35493227428 S6.69.4 0:00.12 java
4277 chenzk 20 0 3218076 35493227428 S0.09.4 0:00.00 java
4279 chenzk 20 0 3218076 35493227428 S0.09.4 0:00.32 java
4278转换成十六进制是10b6
你看看 nid=0x10b6 这个线程在执行什么操作
页:
[1]