久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

生成Java線程轉儲而不重新啟動。

瀏覽:147日期:2024-04-26 14:07:26
如何解決生成Java線程轉儲而不重新啟動。?

這是我們以編程方式進行的操作:http ://pastebin.com/uS5jYpd4

我們使用JMXThreadMXBean和ThreadInfo類:

ThreadMXBean mxBean = ManagementFactory.getThreadMXBean();ThreadInfo[] threadInfos = mxBean.getThreadInfo(mxBean.getAllThreadIds(), 0);...

您也可以kill -QUIT pid在?unix下進行操作以將堆棧轉儲到標準輸出中。還有jstack來轉儲JVM的堆棧。

我們還具有一個自動化功能,如果應用程序的平均負載高于某個閾值,則該功能將轉儲堆棧:

private long lastcpuTimeMillis;private long lastPollTimeMillis;public void checkLoadAverage() { long Now = System.currentTimeMillis(); long currentcpuMillis = getTotalcpuTimeMillis(); double loadAvg = calcLoadAveragePercentage(Now, currentcpuMillis); if (loadAvg > LOAD_AVERAGE_DUMP_THRESHOLD) {try { dumpStack('Load average percentage is ' + loadAvg);} catch (IOException e) { // Oh well, we tried} } lastcpuTimeMillis = currentcpuMillis; lastPollTimeMillis = Now;}private long getTotalcpuTimeMillis() { long total = 0; for (long id : threadMxBean.getAllThreadIds()) {long cpuTime = threadMxBean.getThreadcpuTime(id);if (cpuTime > 0) { total += cpuTime;} } // since is in nano-seconds long currentcpuMillis = total / 1000000; return currentcpuMillis;}private double calcLoadAveragePercentage(long Now, long currentcpuMillis) { long timeDiff = Now - lastPollTimeMillis; if (timeDiff == 0) {timeDiff = 1; } long cpuDiff = currentcpuMillis - lastcpuTimeMillis; double loadAvg = (double) cpuDiff / (double) timeDiff; return loadAvg;}解決方法

我想創建一個跟蹤內存使用情況和cpu使用情況的線程。

如果應用程序達到較高級別,我想生成一個堆轉儲或線程轉儲。

有沒有一種方法可以生成線程轉儲運行時而無需重新啟動?

標簽: java
相關文章:
主站蜘蛛池模板: 濉溪县| 怀宁县| 敖汉旗| 修武县| 临夏县| 清丰县| 盐源县| 漠河县| 六盘水市| 开封县| 大厂| 辽宁省| 唐海县| 龙门县| 库车县| 徐闻县| 苗栗市| 建德市| 衡山县| 葵青区| 寿阳县| 义乌市| 焦作市| 登封市| 江陵县| 龙门县| 宁化县| 大庆市| 齐齐哈尔市| 宁明县| 荔浦县| 嘉祥县| 揭阳市| 遂川县| 北安市| 资阳市| 淮南市| 福贡县| 松阳县| 米泉市| 平江县|