記一次java程序內存溢出問題
一個自然語言處理程序,在封裝為web-service後,部署到線上運行。
但最近出現了內存溢出的情況,頻繁的out of memory。
先盲目嘗試在啟動腳本中增加-XX:-UseGCOverheadLimit。
因為根據原因未找到,依然頻繁的out of memory,只能一直觀察jstat -gcutil <pid>,看到老生代內存降不下來時,重啟程序。
服務程序很簡單,簡單接收參數,自然語言處理,返回數據,除了自然語言處理模塊,都是方法參數,不會出現內存泄漏的情況。
第一次解決這種內存溢出的問題,沒有太大頭緒。一直知道java 可以把內存dump下來,於是試著用mat分析內存。
分析內存時,直接查看dominator tree即可,這時查看的是所有root引用的實例,那個實例內存占用異常一目了然。
通過此種方式找到了內存溢出的原因:
有服務請求者發送的文本長達10萬字,自然語言處理模塊創建了大量的變量,占用了大量的內存,加之大文本的分析緩慢,占用的內存一直未釋放,導致後續數據處理時無法獲得充足的內存。
此時再來一個大文本,服務就掛了。
13333333333333~
記一次java程序內存溢出問題
相關推薦
記一次java程序內存溢出問題
大文本 啟動 充足 嘗試 b-s 分析 無法 都是 root 一個自然語言處理程序,在封裝為web-service後,部署到線上運行。 但最近出現了內存溢出的情況,頻繁的out of memory。 先盲目嘗試在啟動腳本中增加-XX:-UseGCOverheadLimit。
記一次Java的內存泄露分析
新項目 引用 極限 out size exce -a 場景 tpc 當前環境 jdk == 1.8 httpasyncclient == 4.1.3 代碼地址 git 地址:https://github.com/jasonGeng88/java-network-prog
java中內存溢出和內存泄漏的區別
int end fbo gin 一個 urn 垃圾 substring 內存問題 內存溢出 雖然在java中我們不用關心內存的釋放, 垃圾回收機制幫助我們回收不需要的對象,但實際上不正當的操作也會產生內存問題:如,內存溢出、內存泄漏 內存溢出:out of memory:簡
【轉】Java學習---內存溢出的排查經歷
heap cspro 大量 每次 並且 老年代 操作 常見 lvm 【原文】https://www.toutiao.com/i6595365358301872643/ 前言 OutOfMemoryError 問題相信很多朋友都遇到過,相對於常見的業務異常(數組越界、空指針等
記一次內存溢出的分析經歷——thrift帶給我的痛orz
一個bug 服務端 ide 參數 comment ces 結果 業務 改變 說在前面的話 朋友,你經歷過部署好的服務突然內存溢出嗎? 你經歷過沒有看過Java虛擬機,來解決內存溢出的痛苦嗎? 你經歷過一個BUG,百思不得其解,頭發一根一根脫落的煩惱嗎? 我知道,你有過! 但
記一次內存溢出的分析經歷
默認 RKE always 一點 開源 iyu rpc 完成 風險 背景: 有一個項目做一個系統,分客戶端和服務端,客戶端用c++寫的,用來收集信息然後傳給服務端(客戶端的數量還是比較多的,正常的有幾千個), 服務端用Java寫的(帶管理頁面),屬於RPC模
深入理解Java虛擬機——java內存區域與內存溢出異常(一)
線程 文件的 語言 沒有 虛擬 深入理解java 十倍 並且 周期 Java虛擬機全稱:java virtual machine;是Java開發語言中,用來運行Java字節碼文件的平臺;通俗的講,就是一個程序。它提供對Java字節碼的解釋及運行,從而使Java語言能獨立於各
myEclipse開發內存溢出解決辦法myEclipse調整jvm內存大小java.lang.OutOfMemoryError: PermGen space及其解決方法
try 配置 及其 windows logs 環境 ner log reference 摘要: tomcat部署多個項目後,啟動tomcat正常,訪問項目時卻會出現該錯誤在網上查了查又試了好幾次,才解決,將解決方法記錄下來,以方便以後查看或讓遇到同樣問題的朋友有個參考 P
java內存區域/內存溢出匯總
.net lower 引用 介紹 全局 防止 異常處理 簡單 href 本文主要介紹Java虛擬機中的內存區域與各種內存溢出情況匯總。 數據區域 方法區、堆、虛擬機棧、程序計數器、本地方法棧 方法區 用於存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯後的代碼
Java常見的幾種內存溢出及解決方案
-xmx 系列 lba pan fff 特征 聚類算法 聲明 space 1.JVM Heap(堆)溢出:java.lang.OutOfMemoryError: Java heap space JVM在啟動的時候會自動設置JVM Heap的值, 可以利用JVM提
解決eclipse maven install 造成JVM 內存溢出(java.lang.OutOfMemoryError: Java heap space)
add eap tor pac task 報錯信息 efi trace alt maven install 報錯信息: The system is out of resources.Consult the following stack trace for details.
本地啟動tomcat的時候報內存溢出錯誤:java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space
技術分享 exce info compile 界面 current msi lang ech 問題分析: PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域,這塊內存主要是被JVM存放Class和Meta信息的
Java 內存溢出分析
這一 tsp str 字符串 ensure 運行時常量 window flow lower 一、前言 Java 的 JVM 的內存一般可分為 3 個區:堆(heap)、棧(stack)和方法區(method)。 1.1 堆區 1)存儲的全部是對象,每個對象都包含一個與之對
java中出現內存溢出的幾種情況
xss 除了 占用 memory 兩個 存在 text spa 調用 情況一:java.lang.OutOfMemoryError: Java heap space 原因:java堆內存不足,可能是真的不足,也可能是程序中有死循環 方案:1、調整JVM參數-Xms2048m
深入理解java虛擬機-java內存區域與內存溢出異常
變量 情況 規範 服務 turn com ack 永久 ror 線程 運行數據區分為線程共享區和線程獨占區 線程獨占區的意思是每開啟一個線程就會擁有一個線程獨占區域 如下圖所示: 程序計數器: 1)是一塊較小的內存空間,可看做當前線程所執行的字節碼的行號指示器
JAVA內存溢出
over size tor mem 代理 sim 堆內存 ali hiberna JAVA的內存分為方法區、虛擬機棧、本地方法棧、堆、程序計數器五個部分,除程序計數器外,其它部分都可能出現內存溢出OOM(OutOfMemeryError)。 1、內存溢出和內存泄漏的區別
Java虛擬機系列(三)---內存溢出情況及解決方法
方法 運行時常量池溢出 超過 stack 必須 解決 字節 maxperm 描述 因為Java虛擬機內存有堆內存、方法區、虛擬機棧、本地方法棧和程序計數器五部分組成,其中程序計數器是唯一一塊不會發生內存溢出異常的內存區,所以只有四類內存區可能發生內存溢出異常,其中虛擬機棧和
tomcat啟動時,內存溢出,Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"
通過 per memory tomcat配置 -xmx ... nbsp ont ron 問題原因 通過tomcat啟動項目,也許是因為項目太大,配置的內存不夠用了。老是報內存溢出的問題。 解決辦法 1.選中項目 右鍵 run as -》Run Configu
java內存區域管理和內存溢出
動態 解釋 byte 技術 異常情況 銷毀 共享 ret 對象 一、概述: java虛擬機在執行java程序時會把它所管理的內存劃分為若幹個不同的數據區域,這個區域有各自的用途以及創建和銷毀時間,有些區域跟隨虛擬機進程的啟動而存在,有些區域則依賴用戶線程的啟動和結束
《深入理解java虛擬機》讀書筆記——java內存區域和內存溢出異常
uil reference tro idt 三種 指針 理解 內存 stack 幾種內存溢出異常: 堆溢出 原因:創建過多對象,並且GC Roots到對象之間有可達路徑。 分兩種情況: Memory Leak:無用的對象沒有消除引用,導致無用對象堆積。例如《Effi