我正在与一个开发在1GB

Linux目标系统上运行的Java GUI应用程序的团队合作.

我们有一个问题,我们的java进程使用的内存无限期地增长,直到Linux终于杀死了java进程.

我们的堆内存健康稳定. (我们广泛地分析了我们的堆)我们还使用MemoryMXBean监视应用程序的非堆内存使用情况,因为我们认为问题可能在这里.但是,我们看到的报告的堆大小报告的非堆大小保持稳定.

以下是使用1GB RAM(由MemoryMXBean报告的堆和非堆,使用Linux的顶级命令(驻留内存)监视的Java进程使用的总内存))在目标系统上运行应用程序时的数字的示例.

在启动时:

> 200 MB堆提交

> 40 MB非堆提交

> java进程使用320 MB

1天后:

> 200 MB堆提交

> 40 MB非堆提交

> java进程使用的360 MB

2天后:

> 200 MB堆提交

> 40 MB非堆提交

> java进程使用的400 MB

上面的数字只是我们系统执行的“更干净”的代表,但它们是相当准确和接近现实的.正如你所看到的,趋势是明确的.运行应用程序几周后,由于系统内存不足,Linux系统开始出现问题.事情开始放缓.再过几个小时之后,Java进程就被杀死了.

经过几个月的分析,并试图弄清楚这一点,我们仍然在亏损.我觉得很难找到关于这个问题的信息,因为大多数讨论最终解释堆或其他非堆内存池. (如Metaspace等)

我的问题如下:

>如果你打破它,java进程使用的内存包括什么? (除堆和非堆内存池之外)

>哪些其他潜在的来源有内存泄漏? (本机代码?JVM开销?)哪些是一般的,最可能的罪魁祸首?

>如何一个监视器/配置文件这个内存?堆堆之外的所有东西目前对我们来说都是一个黑匣子.

任何帮助将不胜感激.

java为什么内存会无限增大_Java进程的内存无限增长,但是MemoryMXBean报告稳定堆和非堆大小...相关推荐

  1. java堆和非堆_java 堆与非堆 内存

    堆(Heap)和非堆(Non-heap)内存 按照官方的说法:"Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的.&q ...

  2. java内存溢出怎么排查_java线上内存溢出问题排查步骤

    一般线上遇到比较头疼的就是OOM内存溢出问题,我们都会先看错误日志,如果错误日志能够定位出哪个类对象导致内存溢出,那么我们只需要针对问题修改bug就好.但是很多时候我们单凭日志无法定位出内存溢出问题, ...

  3. aix查看oracle进程内存使用情况,AIX 查看进程的内存使用情况

    svmon-P命令显示系统上当前正在运行的所有进程的内存使用情况统计信息. 下面是 svmon -P 命令的示例: # svmon -P ------------------------------- ...

  4. 内存分配的原理__进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)

    如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看. majflt代表major fault,中文名叫大错误,minflt代表minor faul ...

  5. java堆与非堆的一些研究_堆和堆傻傻分不清?一文告诉你 Java 集合中「堆」的最佳打开方式...

    什么是堆? 堆其实就是一种特殊的队列--优先队列. 普通的队列游戏规则很简单:就是先进先出:但这种优先队列搞特殊,不是按照进队列的时间顺序,而是按照每个元素的优先级来比拼,优先级高的在堆顶. 这也很容 ...

  6. 我的世界java占用太多内存_Java 进程占用内存过多,幕后元凶原来是线程太多

    那天中午吃饭,一个同事说,那个项目组的人快气死我了,程序有问题,早晨在群里@了他们,到中午才回消息,然后竟然还说他们的程序没有问题,是我们这边调用的太频繁了. 简直想笑. 背景说明 我们当前这个系统和 ...

  7. java接口经常变动前端怎么办_Java进程故障排查(CPU资源占用高,接口响应超时,功能接口停滞等)...

    故障分析 # 导致系统不可用情况(频率较大): 1)代码中某个位置读取数据量较大,导致系统内存耗尽,进而出现Full GC次数过多,系统缓慢: 2)代码中有比较消耗CPU的操作,导致CPU过高,系统运 ...

  8. java远程调试挂起线程_java进程的远程调试

    一.jdb调试 mqbroker(jvm参数配置) 2.利用jdb/idea/eclipse 远程调试,同本地调试一样 二.jvisualvm jvm 监视 使用jstatd连接 nohup $JAV ...

  9. linux进程的内存空间,Linux进程内存统计

    一. 进程内存统计 cat /proc/[pid]/status 通过/proc/[pid]/status可以查看进程的内存使用情况,包括虚拟内存大小(VmSize),物理内存大小(VmRSS),数据 ...

最新文章

  1. List集合的迭代器方法
  2. 人生苦短,开发用云 | 如何优雅完成程序员的侠客梦?
  3. php 表单录入,PHP 表单和用户输入
  4. c#与mysql数据库连接以及.net framework版本修改问题
  5. STIMULUS(二) —— Hello, Stimulus
  6. [渝粤题库]陕西师范大学《幼儿园语言教育》作业
  7. 浅谈堆栈问题-C++
  8. 2014年度总结——程序员生涯的开启
  9. 基于SpringCloud开发的分布式系统,遇到爬虫、接口盗刷怎么办?
  10. mysql 全连接_mysql 实现全连接
  11. android 3gpp 播放,Android Market:MoboPlayer 最強悍的免費影片播放程式
  12. Linux V4L2驱动框架分析之(一):架构介绍
  13. C语言必背18个经典程序
  14. 安卓初级开发教程 ppt+视频+案例源码
  15. #pragma comment
  16. Android项目:基于安卓Android校园零食配送系统app(计算机毕业设计)
  17. ANDROID内存优化(大汇总——全)
  18. Java计算机毕业设计腾讯网游辅助小助手源码+系统+数据库+lw文档
  19. NOI 1789:算24
  20. C#,图像二值化(16)——全局阈值的力矩保持算法(Moment-proserving Thresholding)及其源代码

热门文章

  1. 海康设备改造成ehome之后服务器收不到注册信息原因
  2. HP打印机同一路由(子网)下共享连接打印机
  3. 【Easyui】Easyui Datagrid 排序
  4. SEO 搜索引擎优化入门教程
  5. 修改 jq weui cityPicker.js原来的值
  6. 长尾词和关键词的区别,长尾关键词最简单最常用的2个​获取方法
  7. Python 面向对象编程(一) —— 面向过程和面向对象的区别
  8. 计算机第一代及第四代发展概况,计算机第一代至第四代的发展过程是什么?
  9. Android下强制关闭其他程序
  10. 数据库-初识Redis(基础命令)