記一次,jvm 內存溢出

1、什么是內存泄漏
內存泄漏是指,有未被釋放的java對象,一直停留在內存中。GCRoot 無法追蹤到此對象,導致此對象無法被回收。

2、什么是內存溢出
內存溢出是指,java程序創建對象需要內存,但是卻沒有內存可用了,內存就溢出了。
溢出:從字面理解,桶不夠裝,水溢出了

3、當時的環境:
打包成jar后,直接 運行 java -jar xx.jar。默認的jvm 運行參數 -Xms 。 因此給jvm分配的內存比較小。然后,當時上傳了1個有10W條的數據的excel插入到數據庫。結果就是,運行了幾分鐘,用top命令查看,java 的 cpu使用率為 99%。結果就是程序直接報錯。

4、當時情況
1、當時不清楚自己服務器的配置情況(阿里云學生機)
2、在本地測試好好的,在服務器端就不行了,懷疑是文件沒上傳,懷疑內存溢出

5、解決過程

1、先查看服務器配置
①、使用free -h 查看服務器內存。

clipboard.png

②、使用top 命令查看 cpu 個數
clipboard.png
輸入top 后, 按 1

2、診斷是文件在服務端沒讀取到,還是內存溢出。
①上傳小量的數據,發現上傳成功,也就是是內存不大夠
②使用top 命令。 客戶端上傳大文件。使用top命令時,發現上傳后,jvm 的cpu 使用率 直接飆到 99%。內存從5% 飆到 35%。最后客戶端直接報錯

3、設置 jvm 的啟動參數

-Xms : 初始堆大小(堆在java中是用于給對象分配內存的)
-Xmx : 最大堆大小
jcmd [pid] VM.flags

①查看 jvm 啟動參數,看是否設置小了

jcmd [pid] VM.flags

②發現確實是設置下小了,重新設置,并啟動

nohup java -Xms512m -Xmx512m -jar xx.jar &

最后的結果就是,程序運行稍微快了,之前上傳1000條左右的數據都很慢,現在就快很多了

總結:
原本是想著能不能通過把jvm的啟動參數設置大一點,進而來支持10W條數據的上傳。無耐,阿里云學生機配置不好,只能稍微修改一點,再將文件切割為小文件上傳了!

jvm參數請參考: https://segmentfault.com/a/11...

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538246.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538246.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538246.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ebnf范式_使用Scala基于詞法單元的解析器定制EBNF范式文法解析

前言近期在做Oracle遷移到Spark平臺的項目上遇到了一些平臺公式翻譯為SparkSQL(on Hive)的需求,而Spark采用親媽語言Scala進行開發。下面是個意外,被論文查重了,移步至我的Leanote博客查看點我,先亂碼一段時間[分后,擬使中的EB式&…

鉆石指標和完美的計算

鉆石的高度計算公式為:鉆石的高度直徑的三次方(單位毫米)0.00366(允許有0.03克拉的誤差)例如,0.5克拉的鉆石直徑是5.01毫米,則它的高為:5.01*5.01*5.01*0.003660.46說明0.5克拉的鉆石直徑只有0.46克拉鉆石的…

linux開機自動ZFS,linux – 為什么重新啟動導致我的ZFS鏡像的一面成為UNAVAIL?

我最近剛剛將批量數據存儲池(ZFS OnLinux 0.6.2,Debian Wheezy)從單設備vdev配置遷移到雙向鏡像vdev配置.之前的池配置是:NAME STATE READ WRITE CKSUMakita ONLINE 0 0 0ST4000NM0033-Z1Z1A0LQ ONLINE 0 0 0在重新啟動完成后一切都很好(我在重新啟動完成后啟動了一…

華為交換機默認vlan都是通的嗎_【思唯網絡學院】華為交換機常用的三種vlan劃分方法...

端口類型在學習劃分vlan前,必須要了解華為交換機的端口類型,以及他們的使用方法,因為端口的類型在實際配置中是必須會用到的,因為下面的vlan劃分會用到。1、Access類型端口執行命令port default vlan vlan-id,將端口加…

Spark應用日志級別設置

Spark-core包設置默認的日志級別為info,所以我們才看到一大堆日志信息。 開發的時候,把print的日志掩蓋了。 方法一: 代碼中設置日志級別 JavaSparkContext contextnew JavaSparkContext(conf); context.setLogLevel("warn"); 方…

linux 恢復操作系統,如何恢復Linux操作系統的GRUB引導程?

先使用一張修復盤進入grub,或者利用其他linux恢復盤等等進入linux系統,然后進入grub控制臺。總之就是想盡辦法進入一個控制臺就是了。然后準備引導進入硬盤上的Linux系統。如下:  grub> root (hd0,10)  grub> kernel /boot/vmlinuz…

Centos 7初始化腳本

今天跟大家分享一個我自己寫的Linux初始化腳本,自認為寫的不是很好。希望看到這篇文章的你,能暫時停留下你的腳步,給些修改意見,或者有什么需要補充的地方都可以提出來,大家共同進步,謝謝!此腳本…

Hive-sql與SQL的區別

總體一致: Hive-sql與SQL基本上一樣,因為當初的設計目的,就是讓會SQL不會編程MapReduce的也能使用Hadoop進行處理數據。 因此,大膽使用SQL的,如果遇到不對的,再查。 區別: Hive沒有delete和u…

python閏年多一天_記一個 python datetime 閏年問題

python中datetime是比較常用的,平時用起來也沒什么問題,但是今天2020年2月29日服務器卻開始報錯了,這里有個平時難以注意的坑服務器上跑的是新浪網的爬蟲,抓取的頁面信息中帶有日期 XX月XX日,需要strfptime轉化一下&am…

linux find 按類型查找,Linux find查找find命令詳解

玩蛇網推薦圖文教程:python 列表Linux命令有很多,今天要介紹的是常用的基礎命令中的find命令。find是Linux系統管理員所喜愛用的必備工具命令之一,它的作用是可以很輕松地找到你想要的文件,一個命令就可以在眾多文件中找到你的目標…

window安裝gcc編譯器

在使用 GraphLab Create 時,導入包失敗,提示libs沒有的導入,而這些libs的編譯是需要gcc。 1、訪問:http://www.mingw.org/ 下載。 2、雙擊安裝 3、安裝好后會彈出下面的組件安裝界面 3、找到mingw32-gcc-g(注意cl…

視頻AI,助力體育賽事轉播走進智能時代

摘要:2018俄羅斯世界杯經過近20天的激戰,已經進入到最關鍵的階段。本次賽事除了精彩紛呈的比賽之外,還加入很多高科技的元素,例如門線、VAR技術等等。讓本屆世界杯成為科技含量最高的一屆世界杯。2018俄羅斯世界杯經過近20天的激戰…

python求同構數_用c語言求1到1000的同構數_后端開發

python與平臺有關嗎_后端開發Python與平臺無關,因為Python是跨平臺的語言,Python作為腳本語言,是解釋執行的,所以能跨平臺,前提是必須要有一個對應的解釋器。具體請看實例:python中count函數的用法詳解_后端…

element表格實現樹形全選_很實用!word中全選的快捷鍵介紹及使用方法

全選快捷鍵可以提高我們在操作word時工作效率,在操作Word2003中怎么對文檔中的文字進行全選呢?下面為大家提供幾種全選的方法,絕對好用。Word怎樣全選?方法一、使用Word全選快捷鍵“CtrlA”進行全選(也適用于電子表格);方法二、展開菜單欄中的“編輯”…

am3352 linux 內核 編譯,am335x uboot, kernel 編譯

一、設置環境變量// 寫在家目錄下面的 .bashrc 里面export KERNEL_PATH~/aplex/kernel3.2.0 // kernel 路徑export UBOOT_PATH~/aplex/uboot2011.09 // u-boot 路勁export ROOTFS_PATH~/aplex/filesystemexport TOOLFS_PATH~/aplex/toolsexport ARCHarm // 設置平臺類型export …

Docker的應用場景

原文鏈接:http://blog.csdn.net/dev_csdn/article/details/78424803 ------------------------------------------------------------------- Docker是開發人員和系統管理員構建,發布和運行分布式應用程序的開放平臺,可以在筆記本電腦、數據…

cad多段線畫圓弧方向_【學員分享】CAD多段線用法

原標題:【學員分享】CAD多段線用法1、執行方法:(1)菜單欄:繪圖→多段線(2)繪圖功能區:繪圖→多段線按鈕(3)快捷鍵:PL2、使用方法(1)多段線與直線的區別:直線每一段都是分開的,圖畫完后不是一個整…

linux 視頻編輯 ffmpeg,ffmpeg轉碼視頻真的好用!(ffmpeg的簡單使用方法)

說明轉碼和編輯視頻今天用Android Studio(后面簡稱AS)里的模擬器給系統錄屏,用來展示OpenGL可視化的東西,打算上傳B站,后來發現AS只能保存webm格式和GIF格式的視頻,并且文件體積巨大,視頻圖像也是順時針旋轉的。沒辦法…

requests庫入門09-OAUTH認證

實際登陸中,認證用到的token會變的,不過可以在GIthub設置一個私人token。 如圖,登錄GIthub,然后用戶下面選擇Settings/Developer settings/Personal access tokens,點擊Generate new token,然后隨便輸個描述&#xff0…

mysql期末考試試卷_mysql試題

net start mysqlfound_rows函數 返回select的總行數哪種操作能夠實現實體完整性 設置外鍵數據模型三要素:數據結構、數據操作、完整性約束,哪項不屬于數據模型 網狀模型(層次、網狀、關系、面向對象模型)觸發器主要用于監視某個表的insert、update以及de…