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. ubuntu java sdk_ubuntu 10.10安装java sdk6过程
  2. java cst gmt_“CST”和“GMT”时间的区别?
  3. day11 函数的参数列表
  4. android120 zhihuibeijing 开机页面
  5. 怎么计算信息完整度_德阳冻货运镖怎么计算费用
  6. 初一模拟赛(4.27)
  7. 内存瓶颈和计算负载问题一举突破?韩松团队提出MUCNetV2:解锁MCU端新纪录!...
  8. 从ResNet101到ResNet50
  9. 数学建模笔记(七):综合评价模型
  10. wex5中java连接数据库_WeX5通过Baas服务访问数据库
  11. golang实现最简单的麻将胡牌算法(不包括牌型,有需求后续可以更新牌型计算)
  12. java文档中心_Java文档 - SendCloud 文档中心 - SendCloud 文档中心
  13. Java中的异常分类[乐乐独记]
  14. nginx如何替换ssl证书
  15. 小屏幕android电视,手机屏幕还能投屏到电视?教你4种方法,1秒钟小屏变大屏
  16. 3.8女王节里的宝妈生意经
  17. android 三星打印机,安卓逆袭传统 三星X4300LX复合机首测
  18. SpringBoot配置Mybatis多数据源
  19. PMP 考试一定要报培训班吗?求靠谱培训机构,最好是自己考过的!
  20. flutter混淆编译生成releaseAPK文件

热门文章

  1. 基于Java语言的OpenCV使用
  2. Tech Article
  3. VR虚拟现实技术线上3D展示,为旅游业带来新的机遇
  4. 完全二叉树前中后序->层序
  5. 【ES6】Promise用法
  6. ubuntu18.04桌面版安装ROS软件
  7. webpack中require的用法
  8. SFU架构的云视频会议系统如何取代硬件视频会议系统,成为5G时代的视频会议新宠?
  9. tui-image-editor编辑图片的使用
  10. 花卉大识别之崭露头角