成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

windows java.exe內(nèi)存暴漲解決、idea跑java tomcat內(nèi)存無(wú)限增長(zhǎng)

瀏覽:100日期:2023-09-22 15:14:58

最近突然遇到個(gè)問(wèn)題:用 idea 跑 Tomcat 服務(wù),不到30分鐘 內(nèi)存就吃完了。用任務(wù)管理器查看,發(fā)現(xiàn) java.exe占了10G內(nèi)存!!

查了各種方法

一、 idea Tomcat 配置

windows java.exe內(nèi)存暴漲解決、idea跑java tomcat內(nèi)存無(wú)限增長(zhǎng)

沒(méi)用!!!

二、idea idea64.exe.vmoptions

安裝目錄下的 bin 下的 idea64.exe.vmoptions 配置,還是 C:UsersAdministrator.IntelliJIdea2019.1config 下的 idea64.exe.vmoptions 配置 改成如下

windows java.exe內(nèi)存暴漲解決、idea跑java tomcat內(nèi)存無(wú)限增長(zhǎng)

也沒(méi)用!!

三、jvisualvm.exe 檢查

然后打開(kāi) jdk/bin的 jvisualvm.exe 監(jiān)控發(fā)現(xiàn)里面的 堆,棧等內(nèi)存空間也是正常的

windows java.exe內(nèi)存暴漲解決、idea跑java tomcat內(nèi)存無(wú)限增長(zhǎng)

著實(shí)郁悶,感覺(jué)java線程的最大內(nèi)存完全不由這些配置控制。

四、線程狀態(tài)檢查

后來(lái)根據(jù)這 篇文章做了排查,發(fā)現(xiàn)也不是程序引發(fā)的問(wèn)題。

五、解決

最后是解決了,方法是

打開(kāi)控制臺(tái),執(zhí)行【 java -Xmx2048m -XX:MaxPermSize=1024m -version】

windows java.exe內(nèi)存暴漲解決、idea跑java tomcat內(nèi)存無(wú)限增長(zhǎng)

如此內(nèi)存是控制住了。

【猜想】:如果沒(méi)有給JVM 設(shè)置內(nèi)存上限,他會(huì)一直跟操作系統(tǒng)申請(qǐng)內(nèi)存。前面幾步都沒(méi)能設(shè)置到位,或者說(shuō)設(shè)置不成功。

補(bǔ)充:java Thread卡死 項(xiàng)目?jī)?nèi)存一直增長(zhǎng)

1.今天項(xiàng)目中出現(xiàn)了一個(gè)問(wèn)題,虛擬內(nèi)存、物理內(nèi)存一直持續(xù)增長(zhǎng),項(xiàng)目需要每隔一小時(shí)重啟一次。很是蛋疼。。怎么辦呢? 很捉急啊。以下是解決方案,有相同問(wèn)題的小伙伴,可以參考參考。

首先查看內(nèi)存

1.top

查看pid 11112 (我的進(jìn)程號(hào))

2.top -H -p 11112

查看線程占用比例 得到線程11140 比較高

3. printf %x 11140

轉(zhuǎn)換為16進(jìn)制 2b84

4.jstack 11112 | grep 2b84 -A 30

jdk的bin目錄下查看代碼

報(bào)錯(cuò):

'pool-4392-thread-1' prio=10 tid=0x00007fa4321be800 nid=0x2786 waiting on condition [0x00007fa2dc013000]java.lang.Thread.State: WAITING (parking)at sun.misc.Unsafe.park(Native Method)- parking to wait for <0x00000000fc0c7ba0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)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:745)

出現(xiàn)以上問(wèn)題是因?yàn)榫€程卡死問(wèn)題。經(jīng)過(guò)查看代碼,是由于在循環(huán)中Thread.sleep()線程了,導(dǎo)致卡死。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

標(biāo)簽: Java
相關(guān)文章: