1.摘要

最近排查了一个比较灵异的线上jvm内存持续增长的问题,排查过程异常艰辛,但是最后竟然是用最简单的办法搞定了……

2.现象

线上机器部署了两个java实例,在运行几天后java开始吃swap空间,java实例的内存占用接近7G,程序响应很慢,重启后又恢复正常。线上配置的堆内存为3600M,栈大小为512k。

3.排查

首先怀疑是java heap的问题,查看heap占用内存,没有什么特殊。

$ jmap -heap pid

然后又怀疑是directbuffer的问题,jdk1.7之后对directbuffer监控的支持变得简单了一些,使用如下脚本

发现directbuffer虽然在增长,但是也只有百兆左右。full gc之后缩小到十几兆,可以忽略。

import java.io.File;

import java.util.*;

import java.lang.management.BufferPoolMXBean;

import java.lang.management.ManagementFactory;

import javax.management.MBeanServerConnection;

import javax.management.ObjectName;

import javax.management.remote.*;

import com.sun.tools.attach.VirtualMachine; // Attach API

/**

* Simple tool to attach to running VM to report buffer pool usage.

java 监控 native 内存_记一次java native memory增长问题的排查相关推荐

  1. linux 内存溢出排查_记一次JAVA 线上故障排查完整套路

    JAVA线上故障排查全套路 线上故障主要会包括cpu.磁盘.内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍.同时例如jstack.jmap等工具也 ...

  2. java判断线程阻塞_记一次锁使用不当导致Dubbo线程阻塞问题

    背景 线上环境一个后台项目,提供基于dubbo实现的事件分发服务,最近突然出现心跳超时. 问题分析 检查内存是否溢出 jstat -gcutil 8166 1000 意料之中,内存正常,因为内部有接入 ...

  3. openjdk platform binary 内存_记一次内存溢出导致的生产事故

    背景 因为同事的离职,半路被迫接手的一个可视化项目,使用ElasticSearch作为OLAP数据库.Docker作为部署工具等,突然有一天项目现场环境出现JVM内存溢出问题,被迫披挂上阵定位问题的原 ...

  4. java 四种内存_不可访问内存 Java四种引用包括强引用,软引用,弱引用,虚引用...

    小结: 1.不可访问内存是指一组没有任何可访问指针指向的由计算机程序进行动态分配的内存块. 2.垃圾收集器能决定是否一个对象还是可访问的:任何被确定不可访问的对象将会被释放. https://zh.w ...

  5. java代码耗尽内存_有关Java内存溢出及内存消耗的小知识

    内存溢出原理: 我们知道,Java程序本身是不能直接在计算机上运行的,它需要依赖于硬件基础之上的操作系统和JVM(Java虚拟机). Java程序启动时JVM都会分配一个初始内存和最大内存给这个应用程 ...

  6. 阿里巴巴 java 电话面试题_记一次阿里巴巴电话面试题

    前几天投了阿里巴巴校招简历,今天晚上突然来了阿里的面试电话,有点紧张又有点激动,面试的问题问的挺全面,但是有些准备不足,因此回答的并不算太满意,现在整理一下分享给大家,希望进阿里的小伙伴可以来踩踩. ...

  7. java 虚拟机的存储_《深入理解java虚拟机》之内存模型与安全

    不同的平台,内存模型是不一样的,但是jvm的内存模型规范是统一的.其实java的多线程并发问题最终都会反映在java的内存模型上,所谓线程安全无非是要控制多个线程对某个资源的有序访问或修改.总结jav ...

  8. java监控表变化_关于实时监控oracle数据库表数据变化的设计与实现

    近期接受项目需求,需要实时处理oracle数据库中表的数据变化,首先想到的是在程序中创建定时器,轮询表.鉴于程序冗余考虑,百度知:oracle数据库java存储过程.Oracle数据库有执行简单jav ...

  9. java 基础 笔试题_非常全面的java基础笔试题

    1.下列说法正确的是() (程序结构) A java程序的main方法必须写在类甩面 B java程序中可以有多个main方法 C.java程序中类名必须与文件名一样 D.JAVA程序的main方法中 ...

最新文章

  1. Fedora 提出统一流程,弃用上千 Python 2 软件包更可控
  2. eclipse奇淫技巧 (转)
  3. matlab 中的dir函数使用
  4. 避免重复造轮子,我们去哪找FPGA IP或是HDL功能模块?
  5. getResource(String name)用法及源码分析
  6. 内置auth 的使用,用超级用户创建
  7. Go专栏“改善Go语言编程质量的50个有效实践”上线了
  8. 雄迈视频板使用调试串口作为普通串口通信
  9. 中恒建模助手插件和绿色建筑的完美结合
  10. 与BB-8跨次元对话,三星Bixby亮相星球大战首映礼
  11. VPS云主机是什么?有什么优势?
  12. 群晖 winscp php,WinSCP自动执行脚本
  13. 埃拉托色尼筛选法(Eratosthenes Sieve)分析
  14. matlab吃cpu还是显卡_如何配置一台适合跑MATLAB的电脑
  15. 【最小费用最大流】知识点讲解
  16. 【转载】采购订单中的容差
  17. aix kill java_AIX环境Java进程cpu瓶颈分析(转)
  18. 如何知道特征的重要性
  19. 再不学编程,你就连7岁孩子都赶不上了!
  20. fopen是python内置函数吗_Python内置的open函数,打开文件的时候可能会产生异常_学小易找答案...

热门文章

  1. DBeaver Enterprise Edition 22.0 企业版
  2. ios判断设备能否打电话、发短信
  3. pku1322 Chocolate
  4. 纵横交错|GoogLeNet(二)
  5. Java小程序祝国庆快乐
  6. skt7850鸿蒙策略,SKT闯入LOLS5决赛的秘密:不准谈恋爱!
  7. angular服务一
  8. [转载] $CF290E$ 题解
  9. 银河计划让闲置带宽共享变宝
  10. Django-page 分页