亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Control+Break在JVM中的處理

沈建明 / 3542人閱讀

摘要:以下各節(jié)描述由處理程序跟蹤的數(shù)據(jù)線程轉(zhuǎn)儲(chǔ)檢測(cè)死鎖堆摘要線程轉(zhuǎn)儲(chǔ)線程轉(zhuǎn)儲(chǔ)由線程堆棧包括線程狀態(tài)組成用于虛擬機(jī)中的所有線程。線程轉(zhuǎn)儲(chǔ)不會(huì)終止應(yīng)用程序在打印線程信息之后它將繼續(xù)。檢測(cè)死鎖除了線程堆棧之外控件中斷處理程序還執(zhí)行死鎖檢測(cè)算法。

2.19 Control + Break 處理程序
在 Oracle Solaris 或 Linux 操作系統(tǒng)上, 在應(yīng)用程序控制臺(tái) (標(biāo)準(zhǔn)輸入) 中按下Ctrl控制鍵和反斜線 () 鍵的組合會(huì)導(dǎo)致 Java 熱點(diǎn) VM 將線程轉(zhuǎn)儲(chǔ)打印到應(yīng)用程序的標(biāo)準(zhǔn)輸出。在 Windows 上, 等效的鍵序列是控件和中斷鍵。這些組合鍵的一般術(shù)語(yǔ)是Control + Break 處理程序。

在 Oracle Solaris 和 Linux 操作系統(tǒng)上, 如果 Java 進(jìn)程收到退出信號(hào), 則會(huì)打印一個(gè)線程轉(zhuǎn)儲(chǔ)。因此, kill -QUIT pid命令會(huì)導(dǎo)致帶有 ID pid的進(jìn)程將線程轉(zhuǎn)儲(chǔ)打印到標(biāo)準(zhǔn)輸出。

以下各節(jié)描述由Control + Break 處理程序跟蹤的數(shù)據(jù):

線程轉(zhuǎn)儲(chǔ)

檢測(cè)死鎖

堆摘要

2.19.1線程轉(zhuǎn)儲(chǔ)
線程轉(zhuǎn)儲(chǔ)由線程堆棧 (包括線程狀態(tài)) 組成, 用于虛擬機(jī)中的所有 Java 線程。線程轉(zhuǎn)儲(chǔ)不會(huì)終止應(yīng)用程序: 在打印線程信息之后, 它將繼續(xù)。

示例 2-35闡釋了一個(gè)線程轉(zhuǎn)儲(chǔ)。

JVM 中所有 Java 線程的示例2-35 線程轉(zhuǎn)儲(chǔ)

Full thread dump Java HotSpot(TM) Client VM (1.6.0-rc-b100 mixed mode):

"DestroyJavaVM" prio=10 tid=0x00030400 nid=0x2 waiting on condition [0x00000000..0xfe77fbf0]
   java.lang.Thread.State: RUNNABLE

"Thread2" prio=10 tid=0x000d7c00 nid=0xb waiting for monitor entry [0xf36ff000..0xf36ff8c0]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at Deadlock$DeadlockMakerThread.run(Deadlock.java:32)
        - waiting to lock <0xf819a938> (a java.lang.String)
        - locked <0xf819a970> (a java.lang.String)

"Thread1" prio=10 tid=0x000d6c00 nid=0xa waiting for monitor entry [0xf37ff000..0xf37ffbc0]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at Deadlock$DeadlockMakerThread.run(Deadlock.java:32)
        - waiting to lock <0xf819a970> (a java.lang.String)
        - locked <0xf819a938> (a java.lang.String)

"Low Memory Detector" daemon prio=10 tid=0x000c7800 nid=0x8 runnable [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"CompilerThread0" daemon prio=10 tid=0x000c5400 nid=0x7 waiting on condition [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x000c4400 nid=0x6 waiting on condition [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=10 tid=0x000b2800 nid=0x5 in Object.wait() [0xf3f7f000..0xf3f7f9c0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0xf4000b40> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0xf4000b40> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x000ae000 nid=0x4 in Object.wait() [0xfe57f000..0xfe57f940]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0xf4000a40> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:485)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
        - locked <0xf4000a40> (a java.lang.ref.Reference$Lock)

"VM Thread" prio=10 tid=0x000ab000 nid=0x3 runnable 

"VM Periodic Task Thread" prio=10 tid=0x000c8c00 nid=0x9 waiting on condition 

輸出由一個(gè)由空行分隔的多個(gè)線程項(xiàng)組成。java 線程 (能夠執(zhí)行 java 語(yǔ)言代碼的線程) 首先打印出來(lái), 后面是有關(guān) VM 內(nèi)部線程的信息。每個(gè)線程項(xiàng)都由標(biāo)題行和線程堆棧跟蹤組成。

標(biāo)題行包含有關(guān)線程的以下信息:

線程名稱

指示線程是否為守護(hù)進(jìn)程線程

線程優(yōu)先級(jí) (prio)

線程 ID (tid), 它是內(nèi)存中線程結(jié)構(gòu)的地址

本機(jī)線程的 ID (nid)

線程狀態(tài), 指示線程在線程轉(zhuǎn)儲(chǔ)時(shí)所做的操作。有關(guān)詳細(xì)信息, 請(qǐng)參見(jiàn)表 2-6 。

地址范圍, 它給出了線程的有效堆棧區(qū)域的估計(jì)值。

2.19.2檢測(cè)死鎖
除了線程堆棧之外, 控件 + 中斷處理程序還執(zhí)行死鎖檢測(cè)算法。如果檢測(cè)到任何死鎖, 則控制 + 中斷處理程序 (如示例 2-36所示) 在每個(gè)已死鎖線程上的線程轉(zhuǎn)儲(chǔ)之后打印附加信息。

示例2-36 死鎖線程的附加信息

Found one Java-level deadlock:
=============================
"Thread2":
  waiting to lock monitor 0x000af330 (object 0xf819a938, a java.lang.String),
  which is held by "Thread1"
"Thread1":
  waiting to lock monitor 0x000af398 (object 0xf819a970, a java.lang.String),
  which is held by "Thread2"

Java stack information for the threads listed above:
===================================================
"Thread2":
        at Deadlock$DeadlockMakerThread.run(Deadlock.java:32)
        - waiting to lock <0xf819a938> (a java.lang.String)
        - locked <0xf819a970> (a java.lang.String)
"Thread1":
        at Deadlock$DeadlockMakerThread.run(Deadlock.java:32)
        - waiting to lock <0xf819a970> (a java.lang.String)
        - locked <0xf819a938> (a java.lang.String)

Found 1 deadlock.

如果設(shè)置了 JVM 標(biāo)志-XX:+PrintConcurrentLocks , 則Control + Break 處理程序還將打印每個(gè)線程擁有的并發(fā)鎖的列表。

2.19.3堆摘要
Control + Break 處理程序也會(huì)打印堆摘要.示例 2-37顯示不同的世代 (堆的區(qū)域), 大小、使用量和地址范圍。如果同時(shí)使用工具 (如pmap ) 檢查進(jìn)程, 則地址范圍尤其有用。.

示例2-37 堆摘要

Heap
 def new generation   total 1152K, used 435K [0x22960000, 0x22a90000, 0x22e40000
)
  eden space 1088K,  40% used [0x22960000, 0x229ccd40, 0x22a70000)
  from space 64K,   0% used [0x22a70000, 0x22a70000, 0x22a80000)
  to   space 64K,   0% used [0x22a80000, 0x22a80000, 0x22a90000)
 tenured generation   total 13728K, used 6971K [0x22e40000, 0x23ba8000, 0x269600
00)
   the space 13728K,  50% used [0x22e40000, 0x2350ecb0, 0x2350ee00, 0x23ba8000)
 compacting perm gen  total 12288K, used 1417K [0x26960000, 0x27560000, 0x2a9600
00)
   the space 12288K,  11% used [0x26960000, 0x26ac24f8, 0x26ac2600, 0x27560000)
    ro space 8192K,  62% used [0x2a960000, 0x2ae5ba98, 0x2ae5bc00, 0x2b160000)
    rw space 12288K,  52% used [0x2b160000, 0x2b79e410, 0x2b79e600, 0x2bd60000)

如果設(shè)置了 JVM 標(biāo)志-XX:+PrintClassHistogram , 則Control + Break 處理程序?qū)⑸啥阎狈綀D。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/68930.html

相關(guān)文章

  • 關(guān)于 try 和 finally 中的 return

    摘要:在語(yǔ)言規(guī)范中也提到如果在語(yǔ)句塊中包含語(yǔ)句,那么語(yǔ)句會(huì)在其之前執(zhí)行。并且還需要注意的是,中的會(huì)覆蓋中的。 關(guān)于 try 和 finally 中的 return 首先我們來(lái)看一段代碼: public class Test { public static int inc() { int x = 1; try { return...

    jeyhan 評(píng)論0 收藏0
  • Java線程那點(diǎn)事兒

    摘要:然而對(duì)于一個(gè)和關(guān)聯(lián)的線程來(lái)說(shuō)在線程被創(chuàng)建和更新他的之前會(huì)有一個(gè)小窗口,因此必須檢查這種情況為線程結(jié)構(gòu)體分配內(nèi)存并創(chuàng)建線程??赡苁?,因此我們耗盡了內(nèi)存太多的活躍線程。代碼執(zhí)行到這,線程還是狀態(tài),因?yàn)榫€程必須被創(chuàng)建者直接啟動(dòng)。 引言 說(shuō)到Thread大家都很熟悉,我們平常寫(xiě)并發(fā)代碼的時(shí)候都會(huì)接觸到,那么我們來(lái)看看下面這段代碼是如何初始化以及執(zhí)行的呢? public class Thread...

    silvertheo 評(píng)論0 收藏0
  • 基于WEBGL架構(gòu)的3D可視化平臺(tái)—家居城3D展示

    摘要:本文將模擬一個(gè)歐派,讓大家足不出戶在家里就能更加直觀立體的挑選家具。創(chuàng)建廣告牌寬度高度深度寬度上的節(jié)數(shù)高度上的節(jié)數(shù)深度上的節(jié)數(shù)中心點(diǎn)家具展銷歐派這里給我們給整個(gè)場(chǎng)景用抽象物體圍起來(lái)了,以免第一人稱控件開(kāi)啟時(shí)會(huì)造成無(wú)碰撞體系墜落出場(chǎng)景。 本文將模擬一個(gè)歐派,讓大家足不出戶在家里就能更加直觀立體的挑選家具。 第一步,利用CampusBuilder搭建模擬場(chǎng)景。CampusBuilder的模...

    libin19890520 評(píng)論0 收藏0
  • 跨域,拒絕說(shuō)概念,上demo

    摘要:文章列出解決方案以及對(duì)應(yīng)的,拒絕說(shuō)概念,不在稀里糊涂。服務(wù)器據(jù)此決定,該實(shí)際請(qǐng)求是否被允許。在有效時(shí)間內(nèi),瀏覽器無(wú)須為同一請(qǐng)求再次發(fā)起預(yù)檢請(qǐng)求。請(qǐng)注意,瀏覽器自身維護(hù)了一個(gè)最大有效時(shí)間,如果該首部字段的值超過(guò)了最大有效時(shí)間,將不會(huì)生效。 文章列出解決方案以及對(duì)應(yīng)的demo, 拒絕說(shuō)概念,不在稀里糊涂。 什么情況出現(xiàn)跨域? 協(xié)議不同 域名不同 端口不同 跨域解決方案 1.同一個(gè)主域下...

    IamDLY 評(píng)論0 收藏0
  • 關(guān)于跨域以及跨域的實(shí)現(xiàn)方式

    摘要:關(guān)于跨域?yàn)槭裁磿?huì)有跨域我們得先了解下同源策略。簡(jiǎn)而言之,同協(xié)議同域名同端口號(hào)什么是跨域跨域就是采取技術(shù)方案突破同源策略的限制,實(shí)現(xiàn)不同域之間交互請(qǐng)求響應(yīng)。 關(guān)于跨域 why? 為什么會(huì)有跨域? 我們得先了解下 ==同源策略(SOP, Same Origin Policy)==。 瀏覽器出于安全方面的考慮,只能訪問(wèn)與包含它的頁(yè)面位于同一個(gè)域中的資源,該策略為通信設(shè)置了相同的協(xié)議、相同的域...

    崔曉明 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<