日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jmc线程转储_查找线程转储中的异常和错误

發布時間:2023/12/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jmc线程转储_查找线程转储中的异常和错误 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jmc線程轉儲

線程轉儲是解決生產問題/調試生產問題的重要工件。 在像過去我們已經討論了幾種有效的線程轉儲故障模式: 堵車 , 跑步機 , RSI , 一個 LL條條大路通羅馬 .........。 在本文中,我們想介紹另一種線程轉儲故障排除模式。

How to capture thread dumps? There are 8 different options to capture thread dumps. You can use the option that is convenient to you. dumps. You can use the option that is convenient to you.

線程轉儲通常在線程堆棧跟蹤中包含異常或錯誤。 應該檢查在其堆棧跟蹤中包含異常或錯誤的線程。 因為它們指出了問題的根源。

最近,一個應用程序引發了java.lang.OutOfMemoryError。 從此應用程序捕獲了線程轉儲。 當我們分析線程轉儲時,我們會注意到一個特定的線程正在拋出java.lang.OutOfMemoryError:

Thread 0x3ff781e764e0 at java.lang.OutOfMemoryError.<init>()V (OutOfMemoryError.java:48) at java.lang.ClassLoader.defineClass1(Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class; (Native Method) at java.lang.ClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class; (ClassLoader.java:757) at java.lang.ClassLoader.defineClass(Ljava/lang/String;[BII)Ljava/lang/Class; (ClassLoader.java:636) at sun.reflect.GeneratedMethodAccessor37.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (Method.java:498) at com.sun.xml.bind.v2.runtime.reflect.opt.Injector.inject(Ljava/lang/String;[B)Ljava/lang/Class; (Injector.java:125) at com.sun.xml.bind.v2.runtime.reflect.opt.Injector.inject(Ljava/lang/ClassLoader;Ljava/lang/String;[B)Ljava/lang/Class; (Injector.java:48) at com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector.prepare(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Class; (AccessorInjector.java:51) at com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.get(Ljava/lang/reflect/Field;)Lcom/sun/xml/bind/v2/runtime/reflect/Accessor; (OptimizedAccessorFactory.java:128) at com.sun.xml.bind.v2.runtime.reflect.Accessor$FieldReflection.optimize(Lcom/sun/xml/bind/v2/runtime/JAXBContextImpl;)Lcom/sun/xml/bind/v2/runtime/reflect/Accessor; (Accessor.java:213) at com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.<init>(Lcom/sun/xml/bind/v2/runtime/JAXBContextImpl;Lcom/sun/xml/bind/v2/runtime/Transducer;Lcom/sun/xml/bind/v2/runtime/reflect/Accessor;)V (TransducedAccessor.java:195) : : at com.sun.xml.ws.client.WSServiceDelegate.getPort(Ljavax/xml/ namespace /QName;Ljava/lang/Class;[Ljavax/xml/ws/WebServiceFeature;)Ljava/lang/Object; (WSServiceDelegate.java:274) /QName;Ljava/lang/Class;[Ljavax/xml/ws/WebServiceFeature;)Ljava/lang/Object; (WSServiceDelegate.java:274) at com.sun.xml.ws.client.WSServiceDelegate.getPort(Ljavax/xml/ namespace /QName;Ljava/lang/Class;)Ljava/lang/Object; (WSServiceDelegate.java:267) /QName;Ljava/lang/Class;)Ljava/lang/Object; (WSServiceDelegate.java:267)

從該堆棧跟蹤中,我們能夠確定該線程在嘗試將xml轉換為java對象時遇到了OutOfMemoryError。

顯然沒有為該應用程序分配足夠的內存來處理大型XML有效負載。 因此,當將大型XML發送到此應用程序時,它開始拋出OutOfMemoryError。 當分配了足夠的內存(即,增加-Xmx值)時,問題得到解決。 因此,在線程轉儲中查找“異常”或“錯誤”是確定問題根源的好模式。

但是在線程轉儲中查找異常或錯誤并不是一件容易的事。 因為線程轉儲往往包含數百或數千個線程。 每個線程將具有多行堆棧跟蹤。 遍歷堆棧跟蹤的每一行以發現異常或錯誤是一個繁瑣的過程。 線程轉儲分析工具在這里很方便。 您可能考慮使用免費的線程轉儲分析工具,例如: fastThread , IBM TDMA , Samurai …來分析應用程序線程轉儲。

將線程轉儲上載到fastThread應用程序時,它將生成根本原因分析報告。 此報告中的一節之一是“異常”。 在本節中,fastThread應用程序報告所有引發異常或錯誤的線程。 以下是本節的屏幕截圖:

圖:fastThread報告中的“異常”部分

您可能會注意到,本節報告了所有在堆棧跟蹤中具有“異常”或“錯誤”的線程。 如果本節中報告了任何線程,則應考慮調查那些線程堆棧跟蹤以確定問題的根源。

翻譯自: https://www.javacodegeeks.com/2020/06/look-for-exceptions-errors-in-thread-dumps.html

jmc線程轉儲

總結

以上是生活随笔為你收集整理的jmc线程转储_查找线程转储中的异常和错误的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。