跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Java 如何解决内存泄露问题,有哪些手段
未分類
19 2 月 2021

Java 如何解决内存泄露问题,有哪些手段

Java 如何解决内存泄露问题,有哪些手段

資深大佬 : fxjson 6

看周边搞的 java 伙伴,普遍反映 java 项目太吃内存,动不动要重启服务,不知道对于吃内存以及内存泄露大家有没有处理方式

大佬有話說 (25)

  • 資深大佬 : qping

    内存不够加内存,实在不行优化代码
    内存泄漏的话 用 MAT ( MemoryAnalyzerTool ) 分析下,看下哪里出问题了

  • 資深大佬 : pjntt

    应用吃内存跟 OOM 不是一个事情

  • 資深大佬 : andj4cn

    @pjntt 哈哈哈,OOM 和 吃内存、内存泄漏都不是一个事情

  • 資深大佬 : tachikomachann

    建议先用 JVM 监控工具分析下占用内存多的都是些什么对象,如果发现是业务相关的,就很好优化了,改改代码,复用对象或者让对象早点被 young gc 就能省大把内存。

  • 資深大佬 : guyeu

    很多常用的框架没有太考虑内存使用,但这个和动不动就要重启是两回事。你这个明显是实现的问题,就不要怪语言了。

  • 資深大佬 : kaokao123

    这跟内存泄露一点关系都没有。Java 吃内存是因为它使用虚拟机进行内存的管理和回收。不像 c++和 objective-c 使用完就主动释放,java 是虚拟机会定期进行内存的回收,在内存没有回收之前就会一直占用。这就是为什么 ios 需要的内存比安卓少的原因。

  • 資深大佬 : chendy

    1. 普遍反映 java 项目太吃内存
    不设置参数默认最大堆是 1/4 系统内存,加上除了堆的部分吃掉 1/3 不是问题
    不过确实吃得多,手里的项目启动起来元数据区就直奔 100m,对于配置低内存小的机器并不友好
    2. 动不动要重启服务
    为啥要重启服务呢?
    3. 不知道对于吃内存以及内存泄露大家有没有处理方式
    吃内存:就让它吃,设置参数限制它吃
    内存泄漏:加参数打 dump,或者直接 jmap 拿 dump,然后分析 dump 定位泄露点修好就行了

  • 資深大佬 : limuyan44

    对 java 有误解,干这么多年没见过要动不动重启服务的应用更别说因为内存不够去重启服务的。

  • 資深大佬 : Jooooooooo

    谁家动不动重启服务解决内存问题?

    基础知识不过关啊.

  • 資深大佬 : newmlp

    只要还能用,你管他内存占用多少

  • 資深大佬 : zhazi

    内存泄露是指,某个对象没用使用,没有释放内存,且随着系统运行时间增长,该对象消耗内存持续增长,最终引起系统崩溃。
    如果某个对象没有使用,但是该对象使用的内存恒定。那么这个对象只是个普通的对象。

    btw 我这面给你解决内存泄露的话先远离你周边的小伙伴,结交一些懂技术的就可以了

  • 資深大佬 : kingfalse

    我司某个 Java 项目启动参数就 100G 内存。。。。。

  • 資深大佬 : xarthur

    内存泄漏难道不是 bug 吗……是 Bug 就修啊……

  • 資深大佬 : coolesting

    我的 android studio 用着用着,电脑的风扇实然 疯,狂,咆,哮, 打开个任务管理一看 java.exe 吃了一 G 内存, 大哥,我就用个编辑器而已,吸性能用不用吸得这么猛

  • 資深大佬 : zhuangzhuang1988

    有病就治,跳大神没用的

  • 資深大佬 : liuxey

    @kingfalse #12 来一次 GC 这不起飞

  • 資深大佬 : ic2y

    @fxjson 让程序跑很长一段时间,内存占用大了之后,jmap dump 出来 jvm 的内存使用,eclipse 有个 MAT 工具,会简单地自动分析下内存泄漏的原因。

    然后,在 MAT 里找到内存消耗比较大的而且是可达( Reachable,不可达的有 unReachable 标记)的类,在 MAT 里的对象上,鼠标右键 GC Path,看看引用路径。就大概知道了。

  • 資深大佬 : msg7086

    内存泄漏可以分析。
    内存不够可以加内存。
    啊?嫌内存用得多?旁边有用内存少的语言和运行环境,欢迎重写。

  • 資深大佬 : cheng6563

    Java 一方面的确内存占用较大,尤其是用了一堆重形框架后。
    另一方面 jvm 有个问题是很不喜欢把用过的内存还给操作系统。

  • 資深大佬 : cheng6563

    openj9 的 jvm 内存占用会小很多,但是目前版本号依然没到 1.0.0 。非生产环境可以用用

  • 資深大佬 : Lemeng

    泄露,靠自己就行。吃不够,就加点

  • 資深大佬 : geekvcn

    内存泄漏你用 C++不是更爆炸

  • 資深大佬 : kingfalse

    回到正题,最起码的启动就加上-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/kar 这俩参数参数,起码蹦的时候还能挖挖坟看看到底是谁的墓( bug )

  • 資深大佬 : securityCoding

    dump 下来用 mat 看下就知道哪里泄露了,线程就用 jstack 看

  • 資深大佬 : lonelymarried

    哦豁,我新入坑 java,一个项目就是用 java 写的,现在上线了,还没用户的,关键是我 java 新手,还不知道咋解决这个问题。go 是不是要好些,不用担心这些,直接写业务就行了?早知道该选 go 写的。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具