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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 死循环排查_java应用死循环排查方法或查找程序消耗资源的线程方法(面试)...

發(fā)布時(shí)間:2023/12/3 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 死循环排查_java应用死循环排查方法或查找程序消耗资源的线程方法(面试)... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天遇到一個(gè)面試,怎么在一堆線程中查找一個(gè)死循環(huán)?

如果遇到線上應(yīng)用cpu飆升,并出現(xiàn)OutOfMemery怎么辦?

首先線上應(yīng)用的jvm配置要養(yǎng)成良好的習(xí)慣,增加一下配置則可以在jvm發(fā)生 oom的時(shí)候自動(dòng)dump日志了? -XX:+HeapDumpOnOutOfMemoryError?? -XX:HeapDumpPath=/export/log/dump/jvm-oom.log

如果遇到線上應(yīng)用特別消耗cpu資源怎么去排查?

ps:首先普及一下linux中的java虛擬機(jī)線程實(shí)現(xiàn)方式:在Linux下面因?yàn)闆]有真正的線程,是用進(jìn)程模擬的,有一個(gè)是輔助線程,所以真正程序開的線程應(yīng)該只有一個(gè)。

一、查看java進(jìn)程

使用jps 或者ps -ef 查找到相應(yīng)的java進(jìn)程或者使用top查看機(jī)器占用cpu比例高的進(jìn)程(進(jìn)程號(hào):13408)

二、使用top -H查看線程,進(jìn)程號(hào):13432

三、將線程號(hào):13432轉(zhuǎn)換成十六進(jìn)制:3478

四、查看dump文件或者使用jstack | grep

額外普及一下線程和進(jìn)程的區(qū)別:

線程:是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體.

與進(jìn)程的區(qū)別:

(1)地址空間:進(jìn)程內(nèi)的一個(gè)執(zhí)行單元;進(jìn)程至少有一個(gè)線程;它們共享進(jìn)程的地址空間;而進(jìn)程有自己獨(dú)立的地址空間;

(2)資源擁有:進(jìn)程是資源分配和擁有的單位,同一個(gè)進(jìn)程內(nèi)的線程共享進(jìn)程的資源

(3)線程是處理器調(diào)度的基本單位,但進(jìn)程不是.

4)二者均可并發(fā)執(zhí)行.

進(jìn)程和線程都是由操作系統(tǒng)所體會(huì)的程序運(yùn)行的基本單元,系統(tǒng)利用該基本單元實(shí)現(xiàn)系統(tǒng)對(duì)應(yīng)用的并發(fā)性。進(jìn)程和線程的區(qū)別在于:

簡而言之,一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程.

線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高。

另外,進(jìn)程在執(zhí)行過程中擁有獨(dú)立的內(nèi)存單元,而多個(gè)線程共享內(nèi)存,從而極大地提高了程序的運(yùn)行效率。

線程在執(zhí)行過程中與進(jìn)程還是有區(qū)別的。每個(gè)獨(dú)立的線程有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。

從邏輯角度來看,多線程的意義在于一個(gè)應(yīng)用程序中,有多個(gè)執(zhí)行部分可以同時(shí)執(zhí)行。但操作系統(tǒng)并沒有將多個(gè)線程看做多個(gè)獨(dú)立的應(yīng)用,來實(shí)現(xiàn)進(jìn)程的調(diào)度和管理以及資源分配。這就是進(jìn)程和線程的重要區(qū)別。

進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位.

線程是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位,它是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位.線程自己基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(如程序計(jì)數(shù)器,一組寄存器和棧),但是它可與同屬一個(gè)進(jìn)程的其他的線程共享進(jìn)程所擁有的全部資源.

一個(gè)線程可以創(chuàng)建和撤銷另一個(gè)線程;同一個(gè)進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行.

總結(jié)

以上是生活随笔為你收集整理的java 死循环排查_java应用死循环排查方法或查找程序消耗资源的线程方法(面试)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。