kongkong011 发表于 2014-12-22 09:59

我的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

Shell_HAT 发表于 2014-12-22 15:56

4278转换成十六进制是10b6
你看看 nid=0x10b6 这个线程在执行什么操作
页: [1]
查看完整版本: 我的java占用cpu太高了有时候%200--%300多