java堆外内存监控,求大神指点

请教个问题,谁搞过,java堆外内存监控啊?直接调用Unsafe类分配的内存。怎么监控这部分内存占用。

0

2个回答

我一共找到以下四个工具:重点看看jconsole和jmap。

1.jps

与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。

2.jstat

一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。

3.jmap

打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。

4.jconsole

一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。

0

谢谢,我要监控的是堆外内存

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
26、如何监控和诊断JVM堆内和堆外内存使用?
目录 今天我要问你的问题是,如何监控和诊断 JVM 堆内和堆外内存使用? 典型回答 考点分析 知识扩展 首先,堆内部是什么结构? 1. 新生代 2. 老年代 3. 永久代 第二,分析完堆内空间,我们一起来看看 JVM 堆外内存到底包括什么? 一课一练 上一讲我介绍了 JVM 内存区域的划分,总结了相关的一些概念,今天我将结合 JVM 参数、工具等方面,进一步分析 JVM 内存...
堆外内存泄露
原文:https://mp.weixin.qq.com/s?__biz=MzIzNzQzNjEwMw==&mid=2247484816&idx=1&sn=2e60a5afffcbcec401c10a3c85c91173&chksm=e8c9e838dfbe612e8134613b37bf739d22de242482a758dcfdbb55b0beff6c819e9bbb392f9d&mpshare
perftools查看JVM堆外内存
转自http://koven2049.iteye.com/blog/1142768 最近线上运行的hbase发现分配了16g内存,但是实际使用了22g,堆外内存达到6g。感觉非常诡异。堆外内存用一般的工具很难查看,可以通过google-perftools来跟踪:  http:
JNI引起的堆外内存泄漏问题分析
欢迎访问独立博客:tech.simiam.com 背景客户现场的监控系统中有一个网络听诊器功能,其每隔1分钟会对全网设备进行ping操作,以此来尽可能快的发现设备及网络是否出现异常。暂且不说通过该功能来对设备及网络作健康检测是否靠谱。由于JAVA对于网络层以下的协议是无能为力的,而ping操作涉及ICMP与ARP协议,因此监控系统只能借助JNI机制来搞定。BUG现象监控系统的java.exe进程每隔几
java堆外内存泄漏
java堆外内存泄漏 最近有个系统在做压力测试, 环境配置: 4核CPU 8g内存 jdk1.6.0_25,jvm配置-server -Xms2048m -Xmx2048m 出现问题如下 执行并发300人,压测持续1个小时内存使用率从20%上升到100%,tps从1100多降低到600多。
Java堆外内存排查小结
简介JVM堆外内存难排查但经常会出现问题,这可能是目前最全的JVM堆外内存排查思路。通过本文,你应该了解:pmap 命令gdb 命令perf 命令内存 RSS、VSZ的区别java NMT起因这几天遇到一个比较奇怪的问题,觉得有必要和大家分享一下。我们的一个服务,运行在docker上,在某个版本之后,占用的内存开始增长,直到docker分配的内存上限,但是并不会OOM。版本的更改如下:升级了基础软...
Java堆外内存泄露分析
查看堆内存占用正常,jvm垃圾回收也没有异常。而top出来显示java占用内存是几个G,那么可能想到了是堆外内存泄漏。 需要安装google-perftools工具进行分析 1.先安装g++ 不然编译会报错:g++: command not found # yum -y install gcc gcc-c++ ---- 2.安装libunwind 不建议版本>0.99据说有问题,
Netty之Java堆外内存
Java的堆外内存本来是高贵而神秘的东西,只在一些缓存方案的收费企业版里出现。但自从用了Netty,就变成了天天打交道的事情,毕竟堆外内存能减少IO时的内存复制,不需要堆内存Buffer拷贝一份到直接内存中,然后才写入Socket中;而且也没了烦人的GC。 好在,Netty所用的堆外内存只是Java NIO的 DirectByteBuffer类,通读一次很快。还有一些sun.misc.*的类木有源
一文探讨堆外内存的监控与回收
引子 记得那时一个风和日丽的周末,太阳红彤彤,花儿五颜六色,96 年的普哥微信找到我,描述了一个诡异的线上问题:线上程序使用了 NIO FileChannel 的 堆内内存作为缓冲区,读写文件,逻辑可以说相当简单,但根据监控却发现堆外内存飙升,导致了 OutOfMemeory 的异常。 由这个线上问题,引出了这篇文章的主题,主要包括:FileChannel 源码分析,堆外内存监控,堆外内存回收...
解Bug之路——记一次JVM堆外内存泄露Bug的查找
前言JVM的堆外内存泄露的定位一直是个比较棘手的问题。此次的Bug查找从堆内内存的泄露反推出堆外内存,同时对物理内存的使用做了定量的分析,从而实锤了Bug的源头。笔者将此Bug分析的过程写成博客,以飨读者。由于物理内存定量分析部分用到了linux kernel虚拟内存管理的知识,读者如果有兴趣了解请看ulk3(《深入理解linux内核第三版》)内存泄露Bug现场一个线上稳定运行了三年的系统,从物理...
追踪 Netty 异常占用堆外内存的经验分享
https://zhuanlan.zhihu.com/p/21741364 本文记述了定位 Netty 的一处漏洞的全过程。事情的起因是我们一个使用了 Netty 的服务,随着运行时间的增长,其占用的堆外内存会逐步攀升,大概持续运行三四天左右,堆外内存会被全部占满,然后只能重启来解决问题。好在服务是冗余配置的,并且可以自动进行 Load Balance,所以每次重启不会带来什么损失。
堆外内存DirectByteBuffer剖析
操作系统中除了jvm申请的内存外,还有一块jvm以外的内存,这块内存空间一船是连续的,DirectByteBuffer对象是在jvm申请和创建的,内容是在堆外内存存放的的,DirectByteBuffer保存申请堆外内存时的起始偏移地址和堆外内存申请的容量。 java.nio.DirectByteBuffer源码包含了这些类: Bits:记录申请堆外内存的大小及创建Unsafe对象 Un
高阶干货|如何用gperftools分析深度学习框架的内存泄漏问题
本系列为高阶干货,面向深度学习从业者,栏目会定期分享PaddlePaddle研发工程师和产品经理的行业经验。本篇和内存泄漏分析相关,适合中高阶深度学习工程师仔细阅读,预计阅读时间5分钟乔龙飞:PaddlePaddle开源社区成员,百度资深研发工程师,目前负责PaddlePaddle相关技术工作什么是内存泄漏计算机程序都可能有内存泄漏的风险。内存泄漏一般是由于程序在堆(heap)上分配了内存而没有释...
今咱们来聊聊JVM 堆外内存泄露的BUG是如何查找的
前言 JVM的堆外内存泄露的定位一直是个比较棘手的问题。此次的Bug查找从堆内内存的泄露反推出堆外内存,同时对物理内存的使用做了定量的分析,从而实锤了Bug的源头。笔者将此Bug分析的过程写成博客,以飨读者。 由于物理内存定量分析部分用到了linux kernel虚拟内存管理的知识,读者如果有兴趣了解请看ulk3(《深入理解linux内核第三版》) 内存泄露Bug现场 一个线上稳定运行...
perftools查看堆外内存并解决hbase内存溢出
最近线上运行的hbase发现分配了16g内存,但是实际使用了22g,堆外内存达到6g。感觉非常诡异。堆外内存用一般的工具很难查看,可以通过google-perftools来跟踪: [url]http://code.google.com/p/google-perftools/downloads/list[/url] 它的原理是在java应用程序运行时,当调用malloc时换用它的...
记一次堆外内存溢出排查过程
服务器发布/重启后,进程占用内存 21%(3g),观察进程占用内存,以一天4%左右的速度增长,一定时间过后,java 进程内存增长到接近 90%,服务器报警。此时 old 区占用 50%,未达到 CMS GC 阈值,因此不会触发 CMS GC,而导致服务器崩溃。本文记录排查过程,以及最后的解决方案。
Netty之Java堆外内存扫盲贴
Java的堆外内存本来是高贵而神秘的东西,只在一些缓存方案的收费企业版里出现。但自从用了Netty,就变成了天天打交道的事情,毕竟堆外内存能减少IO时的内存复制,不需要堆内存Buffer拷贝一份到直接内存中,然后才写入Socket中;而且也没了烦人的GC。 好在,Netty所用的堆外内存只是Java NIO的 DirectByteBuffer类,通读一次很快。还有一些sun.misc.*的类
专治jdk8堆外内存去哪了
centos6.5 64bit 1、jdk8+tomat8 2、 堆外内存参数配置 -XX:InitialCodeCacheSize=64M \ -XX:CodeCacheExpansionSize=1M \ -XX:CodeCacheMinimumFreeSpace=1M \ -XX:ReservedCodeCacheSize=200M \ -XX:MinMetaspace
诊断和监控JVM堆内和堆外内存使用
一、如何诊断和监控JVM堆内核堆外内存使用 可以使用综合性的图形化工具,如JConsole 可以使用命令行工具进行运行时查询,如 jstat 和 jmap ,可以查看堆,方法区等使用数据。 可以使用jmap等提供的命令,生成堆转储(Heap Dump)文件,然后利用 jhat 等堆转储分析工具进行详细分析 二、堆内部结构 对于堆内存,最常见的是新生代和老生代的划分。随着JVM的发展和新的G...
JDK工具jvisualvm监控堆内存使用率、cpu使用率等
JDK自带jvisualvm,在bin目录下 简介: VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe),能够监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。 ...
Netty使用案例 -堆外内存泄漏跟踪
内存池ByteBuf泄漏没有引起堆内存溢出 服务端代码入下 public class RouterServerHandler extends ChannelInboundHandlerAdapter { static ExecutorService executorService = Executors.newSingleThreadExecutor(); PooledByteBu...
JVM堆外内存问题排查
摘要 JVM 堆内存一般分析的比较多,本篇谈谈堆外内存问题排查,通常我们需要排查堆外内存的原因是系统整个内存使用飙高,但是堆内内存使用正常。这时候就需要分析堆外内存了 堆外内存组成 通常JVM的参数我们会配置 -Xms 堆初始内存 -Xmx 堆最大内存 -XX:+UseG1GC/CMS 垃圾回收器 -XX:+DisableExplicitGC 禁止显示GC -XX:MaxDirec...
JAVA堆内内存、堆外内存
定义堆内存完全由JVM负责分配和释放,如果代码有程序缺陷,可能是触发OOM堆外内存为了能直接分配和释放内存,提高效率。使用方式:使用未公开的Unsafe和NIO下的ByteBuffer堆外内存的回收机制Direct Memory是受GC控制的,例如ByteBufferbb = ByteBuffer.allocateDirect(1024),这段代码的执行会在堆外占用1k的内存,Java堆内只会占用...
【Java核心-进阶】JVM 内存监控与诊断
1. 获取 JVM 内存信息的方法 1.1 综合性图形化工具 如:JConsole、VisualVM(GitHub)、 VisualVM(JDK tool)、Java Mission Control(JMC)等   其中,JFR(Java Flight Recorder)+ JMC 算是针对生产环境中查看 JVM 信息的典型方法之一。 具体操作就是: 先让Java进程开启JFR...
Java堆外内存及导致的溢出错误
除了Java堆和永生代之外,还有一些区域会占用较多的内存,而这些内存总和可能受到操作系统进程最大的内存限制。比如,一个服务器内存2G,其中1.6G分配给Java堆,另外的0.4G分配给操作系统和下面的区域,那么0.4G很可能不够用。例如当Direct Memory占用过多的内存时,虚拟机虽然会对Direct Memory进行回收,但是却不像新生代,老年代一样,发现空间不足了就通知收集器进行垃圾回收
Java NIO学习笔记三(堆外内存之 DirectByteBuffer 详解)
堆外内存堆外内存是相对于堆内内存的一个概念。堆内内存是由JVM所管控的Java进程内存,我们平时在Java中创建的对象都处于堆内内存中,并且它们遵循JVM的内存管理机制,JVM会采用垃圾回收机制统一管理它们的内存。那么堆外内存就是存在于JVM管控之外的一块内存区域,因此它是不受JVM的管控。
堆外内存与堆内内存详解
堆外内存一直是Java业务开发人员难以企及的隐藏领域,究竟他是干什么的,以及如何更好的使用呢?那就请跟着我进入这个世界吧。一、什么是堆外内存1、堆内内存(on-heap memory)回顾堆外内存和堆内内存是相对的二个概念,其中堆内内存是我们平常工作中接触比较多的,我们在jvm参数中只要使用-Xms,-Xmx等参数就可以设置堆的大小和最大值,理解jvm的堆还需要知道下面这个公式:堆内内存 = 新生...
堆内存和堆外内存(又名直接内存)优缺点
http://blog.csdn.net/qq_17612199/article/details/52316719 HeapByteBuffer与DirectByteBuffer,在原理上,前者可以看出分配的buffer是在heap区域的,其实真正flush到远程的时候会先拷贝得到直接内存,再做下一步操作(考虑细节还会到OS级别的内核区直接内存),其实发送静态文件最快速的方法是通
【深入Java编程】JVM源码分析之堆外内存完全解读
概述 广义的堆外内存 说到堆外内存,那大家肯定想到堆内内存,这也是我们大家接触最多的,我们在jvm参数里通常设置-Xmx来指定我们的堆的最大值,不过这还不是我们理解的Java堆,-Xmx的值是新生代和老生代的和的最大值,我们在jvm参数里通常还会加一个参数-XX:MaxPermSize来指定持久代的最大值,那么我们认识的Java堆的最大值其实是-Xmx和-XX:MaxPermSize的总和,在...
java堆内存和堆外内存解释
一般情况下,Java中分配的非空对象都是由Java虚拟机的垃圾收集器管理的,也称为堆内内存(on-heap memory)。虚拟机会定期对垃圾内存进行回收,在某些特定的时间点,它会进行一次彻底的回收(full gc)。彻底回收时,垃圾收集器会对所有分配的堆内内存进行完整的扫描,这意味着一个重要的事实——这样一次垃圾收集对Java应用造成的影响,跟堆的大小是成正比的。过大的堆会影响Java应用的性...
Java堆外内存泄露浅谈
前年的文章,备份 前几天一个项目在长时间压测的情况下,发现内存一直飙升,停止压测,内存不释放,明显肯定是内存泄露。把JVM的 Xmx设小了还是无济于事,检查JVM的垃圾回收情况一切都正常,非常困惑,从来没有遇到过这样的情况。经高人指点,知道是JVM的堆外内存泄露,是指我的java程序或者调用到的第三方包直接向OS申请内存,不通过JVM,所以申请的内存不属于jvm管理,自然无法在GC里释放掉。 ...
Java进程堆外内存(off heap)大小
使用ByteBuffer.allocateDirect分配的off heap内存大小本机进程 在Jvisualvm中安装 Mbeans插件,然后查看java.nio/BufferPool/direct 进程内使用代码获取 MBeanServer mbs = ManagementFactory. getPlatformMBeanServer() ; ObjectName objectName = ne
java中使用堆外内存,关于内存回收需要注意的事和没有解决的遗留问题(等大神解答)
JVM可以使用的内存分外2种:堆内存和堆外内存,堆内存完全由JVM负责分配和释放,如果程序没有缺陷代码导致内存泄露,那么就不会遇到java.lang.OutOfMemoryError这个错误。使用堆外内存,就是为了能直接分配和释放内存,提高效率。JDK5.0之后,代码中能直接操作本地内存的方式有2种:使用未公开的Unsafe和NIO包下ByteBuffer。C语言的内存分配和释放函数malloc/free,必须要一一对应,否则就会出现内存泄露或者是野指针的非法访问。java中我们需要手动释放获取的堆外内存吗
9.JAVA的堆外内存(基于NIO的ByteBuffer类实现)
堆内内存:堆内内存 = 新生代+老年代+持久代 1.    堆内存完全由JVM负责分配和释放,如果程序没有缺陷代码导致内存泄露,那么就不会遇到java.lang.OutOfMemoryError这个错误。使用堆外内存,就是为了能直接分配和释放内存,提高效率。JDK5.0之后,代码中能直接操作本地内存的方式有2种:1.使用未公开的Unsafe。2.NIO包下ByteBuffer。java.nio.D...
作为 Java 开发者,你需要了解的堆外内存知识
本文来自作者  应书澜 在 GitChat 上分享 「深入解读 Java 堆外内存(直接内存)」1. 引言很久没有遇到堆外内存相关的问题了,五一假期刚结束,便不期而遇,以...
性能监控工具以及java堆分析OOM
一、性能监控工具 1.系统性能监控 Linux -确定系统运行的整体状态,基本定位问题所在 -uptime: ------系统时间 ------运行时间(例子中为127天) ------连接数(每个终端算一个连接) ------1,5,15分钟内的系统平均负载(运行队列中的平均进程数) -top命令:动态查看进程变化,监控linux的系统状况 -vmstat:显示虚拟内...
堆内内存与对外内存区别
名词解释:     堆内内存:on-heap memory     对外内存:off-heap memory 堆内与堆外的关系      其实堆内堆外是两个相对的关系,堆内内存是我们常用到的。Java分配的非空对象都是由java虚拟机的垃圾收集器管理的,这一部分称为堆内内存,虚拟机会定期对垃圾内存进行回收,在某些特定的时间点,它会进行一次彻底的回收(full gc)。彻底回收时,垃
堆外内存的回收机制分析
1.堆外内存 JVM启动时分配的内存,称为堆内存,与之相对的,在代码中还可以使用堆外内存,比如Netty,广泛使用了堆外内存,但是这部分的内存并不归JVM管理,GC算法并不会对它们进行回收,所以在使用堆外内存时,要格外小心,防止内存一直得不到释放,造成线上故障。 2.堆外内存的申请和释放 JDK的ByteBuffer类提供了一个接口allocateDirect(int capacity)进行...
Java框架(二)——Structs
Structs是Java三大框架之一,Struts是采用JavaServlet/JavaServer Pages技术,开发Web应用程序的开放源码的Framework。采用Structs开发是基于MVC的应用框架。        首先简单再说一下MVC(Model/View/Controller):       M是指数据模型,在Structs中通常由ActionForm Bean表示
堆外内存溢出
配置JVM参数时,不仅仅要考虑实际内存来设置-Xmx等参数,还要考虑到直接内存!因为,直接内存并不是JVM运行时数据区的一部分,但是会被经常使用。如果忽略了它,很可能会造成明明jvm内存还是足够的,但是却内存溢出了。原因是,各个内存区域的综合大于物理内存的限制啦。...
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java大神班 java大神学习笔记