摘要:什么是內(nèi)存溢出內(nèi)存溢出是指,程序創(chuàng)建對(duì)象需要內(nèi)存,但是卻沒(méi)有內(nèi)存可用了,內(nèi)存就溢出了。使用命令查看個(gè)數(shù)輸入后,按診斷是文件在服務(wù)端沒(méi)讀取到,還是內(nèi)存溢出。無(wú)耐,阿里云學(xué)生機(jī)配置不好,只能稍微修改一點(diǎn),再將文件切割為小文件上傳了參數(shù)請(qǐng)參考
1、什么是內(nèi)存泄漏
內(nèi)存泄漏是指,有未被釋放的java對(duì)象,一直停留在內(nèi)存中。GCRoot 無(wú)法追蹤到此對(duì)象,導(dǎo)致此對(duì)象無(wú)法被回收。
2、什么是內(nèi)存溢出
內(nèi)存溢出是指,java程序創(chuàng)建對(duì)象需要內(nèi)存,但是卻沒(méi)有內(nèi)存可用了,內(nèi)存就溢出了。
溢出:從字面理解,桶不夠裝,水溢出了
3、當(dāng)時(shí)的環(huán)境:
打包成jar后,直接 運(yùn)行 java -jar xx.jar。默認(rèn)的jvm 運(yùn)行參數(shù) -Xms 。 因此給jvm分配的內(nèi)存比較小。然后,當(dāng)時(shí)上傳了1個(gè)有10W條的數(shù)據(jù)的excel插入到數(shù)據(jù)庫(kù)。結(jié)果就是,運(yùn)行了幾分鐘,用top命令查看,java 的 cpu使用率為 99%。結(jié)果就是程序直接報(bào)錯(cuò)。
4、當(dāng)時(shí)情況
1、當(dāng)時(shí)不清楚自己服務(wù)器的配置情況(阿里云學(xué)生機(jī))
2、在本地測(cè)試好好的,在服務(wù)器端就不行了,懷疑是文件沒(méi)上傳,懷疑內(nèi)存溢出
5、解決過(guò)程
1、先查看服務(wù)器配置
①、使用free -h 查看服務(wù)器內(nèi)存。
②、使用top 命令查看 cpu 個(gè)數(shù)
輸入top 后, 按 1
2、診斷是文件在服務(wù)端沒(méi)讀取到,還是內(nèi)存溢出。
①上傳小量的數(shù)據(jù),發(fā)現(xiàn)上傳成功,也就是是內(nèi)存不大夠
②使用top 命令。 客戶(hù)端上傳大文件。使用top命令時(shí),發(fā)現(xiàn)上傳后,jvm 的cpu 使用率 直接飆到 99%。內(nèi)存從5% 飆到 35%。最后客戶(hù)端直接報(bào)錯(cuò)
3、設(shè)置 jvm 的啟動(dòng)參數(shù)
-Xms : 初始堆大?。ǘ言趈ava中是用于給對(duì)象分配內(nèi)存的) -Xmx : 最大堆大小 jcmd [pid] VM.flags
①查看 jvm 啟動(dòng)參數(shù),看是否設(shè)置小了
jcmd [pid] VM.flags
②發(fā)現(xiàn)確實(shí)是設(shè)置下小了,重新設(shè)置,并啟動(dòng)
nohup java -Xms512m -Xmx512m -jar xx.jar &
最后的結(jié)果就是,程序運(yùn)行稍微快了,之前上傳1000條左右的數(shù)據(jù)都很慢,現(xiàn)在就快很多了
總結(jié):
原本是想著能不能通過(guò)把jvm的啟動(dòng)參數(shù)設(shè)置大一點(diǎn),進(jìn)而來(lái)支持10W條數(shù)據(jù)的上傳。無(wú)耐,阿里云學(xué)生機(jī)配置不好,只能稍微修改一點(diǎn),再將文件切割為小文件上傳了!
jvm參數(shù)請(qǐng)參考: https://segmentfault.com/a/11...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71595.html
摘要:現(xiàn)象登入生產(chǎn)環(huán)境,使用命令因?yàn)檫@時(shí)候并沒(méi)有打的,所以只能觀察現(xiàn)象。其他的可以根據(jù)這個(gè)類(lèi)推,是內(nèi)純的占用量。 前言 我們的游戲上線之初,經(jīng)常有玩家反饋卡,或者有網(wǎng)絡(luò)延遲等現(xiàn)象,造成用戶(hù)流失等現(xiàn)象,這時(shí)候我就想到是不是可能是之前的jvm配置有問(wèn)題,或者存在內(nèi)存泄露等問(wèn)題。 現(xiàn)象 登入生產(chǎn)環(huán)境,使用命令,因?yàn)檫@時(shí)候并沒(méi)有打gc的log,所以只能觀察現(xiàn)象。 jstat -gcutil 270...
摘要:首先先解讀下這個(gè)報(bào)警內(nèi)容,原因活躍線程數(shù)過(guò)多,是監(jiān)聽(tīng)的端口號(hào)用來(lái)獲取虛擬機(jī)各項(xiàng)信息,代表著此時(shí)的線程數(shù),是設(shè)置的報(bào)警閾值。 前言 前天,一位21世紀(jì)的好好青年正在工位上默念社會(huì)主義大法好的時(shí)候,釘釘上又報(bào)警了(公司項(xiàng)目接入了open-faclon監(jiān)控,指標(biāo)不正常會(huì)報(bào)警給釘釘?shù)臋C(jī)器人),無(wú)奈默默流淚揮手告別社會(huì)主義大法開(kāi)始定位線上問(wèn)題。 報(bào)警內(nèi)容 首先我們先來(lái)看下報(bào)警信息,為防止泄露公...
摘要:一說(shuō)明當(dāng)虛擬機(jī)申請(qǐng)不到內(nèi)存空間的時(shí)候,會(huì)報(bào)堆內(nèi)存溢出。記錄次數(shù)不讓進(jìn)程結(jié)束,便于使用分析工具來(lái)查看內(nèi)存情況使用的版本報(bào)錯(cuò)信息運(yùn)行結(jié)果表明,運(yùn)行到次時(shí),出現(xiàn)了堆內(nèi)存溢出。 一、說(shuō)明 當(dāng)虛擬機(jī)申請(qǐng)不到內(nèi)存空間的時(shí)候,會(huì)報(bào)堆內(nèi)存溢出: OutOfMemoryError:java heap space。 常見(jiàn)的原因:http://outofmemory.cn/c/java-... 我測(cè)試到時(shí)...
摘要:內(nèi)存溢出的情況就是從類(lèi)加載器加載的時(shí)候開(kāi)始出現(xiàn)的,內(nèi)存溢出分為兩大類(lèi)和。以下舉出個(gè)內(nèi)存溢出的情況,并通過(guò)實(shí)例代碼的方式講解了是如何出現(xiàn)內(nèi)存溢出的。內(nèi)存溢出問(wèn)題描述元空間的溢出,系統(tǒng)會(huì)拋出。這樣就會(huì)造成棧的內(nèi)存溢出。 導(dǎo)言: 對(duì)于java程序員來(lái)說(shuō),在虛擬機(jī)自動(dòng)內(nèi)存管理機(jī)制的幫助下,不需要自己實(shí)現(xiàn)釋放內(nèi)存,不容易出現(xiàn)內(nèi)存泄漏和內(nèi)存溢出的問(wèn)題,由虛擬機(jī)管理內(nèi)存這一切看起來(lái)非常美好,但是一旦...
摘要:內(nèi)存溢出分配的內(nèi)存空間超過(guò)系統(tǒng)內(nèi)存。內(nèi)存泄漏的原因分析由大塊組成堆,棧,本地方法棧,程序計(jì)數(shù)器,方法區(qū)。內(nèi)存溢出的原因分析內(nèi)存溢出是由于沒(méi)被引用的對(duì)象垃圾過(guò)多造成沒(méi)有及時(shí)回收,造成的內(nèi)存溢出。小結(jié)棧內(nèi)存溢出程序所要求的棧深度過(guò)大導(dǎo)致。 showImg(https://segmentfault.com/img/bVbweuq?w=563&h=300); 前言:JVM中除了程序計(jì)數(shù)器,其他...
閱讀 3651·2021-11-23 09:51
閱讀 1995·2021-11-16 11:42
閱讀 3244·2021-11-08 13:20
閱讀 1098·2019-08-30 15:55
閱讀 2210·2019-08-30 10:59
閱讀 1242·2019-08-29 14:04
閱讀 1026·2019-08-29 12:41
閱讀 2029·2019-08-26 12:22