最近在研究Java程序内存问题跟踪,主要处理程序在上时间运行情况下各种 OutOfMemory 异常,将使用的工具和心得点滴记录在这里备忘

常用工具

JDK1.6版本自带很多丰富的内存/线程跟踪调试工具

jps命令,查看本机器所有Java进程vmid

jps -l

jstat命令,跟踪某一Java进程GC运行情况

jstat -gcutil [vmid] 2000    (每2秒刷新一次)

jmap命令,强制Java进程生成当前堆快照(dump文件)

jmap -dump:format=b,file=c:/xxx.bin [vmid]

jstack命令,生成虚拟机当前线程快照

jstack -l [vmid] > c:/xxx.txt

可视化工具:

jconsole

JDK自带

Eclipse Memory Analyzer

基于Eclipse框架开发,专用分析dump文件,可以从多种角度协助查找程序内存使用问题

VisualVM

基于NetBeans框架开发,独立下载,初次安装就是个框架,需要安装插件才能正常使用

VisualVM第一次启动会报一个异常(反正我这里第一次用一定报)

cannot find java 1.6 or higher

解决办法:到VisalVM安装目录 /etc/visualvm.conf 文件

将其中的 jdkhome 注释打开,并配置上本机JDK绝对路径即可

关于在VisualVM中监控远程服务的方法:

将如下代码保存文件,文件名命名为 jstatd.all.policy

grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; };

将此文件拷贝到远程服务器的JDK bin目录中,在保持服务运行状态下,启动命令行窗口,切换到JDK/bin目录,运行如下命令

jstatd -p 1099 -J-Djava.security.policy=jstatd.all.policy

在VisualVM客户机上,添加远程服务器的IP地址(默认jstat监控端口使用的就是1099),就可以实现远程监控了

处理OutOfMemery心得

几篇很有价值的参考博客

java 内存 监控_Java内存监视相关推荐

  1. 安装Java Visualvm监控堆内存和参数说明

    安装Java Visualvm监控堆内存和参数说明 1.概述 这篇文章介绍使用Java Visualvm工具监控堆内存VisualGC插件的安装以及监控堆内存参数说明. 摘要 VisualGC插件安装 ...

  2. java虚拟机内存监控_java虚拟机内存监控工具

    1.jps(JVM Process Status Tool):JVM机进程状况工具 -m 输出传递给main方法的参数,如果是内嵌的JVM则输出为null. -l   输出应用程序主类的完整包名,或者 ...

  3. java虚拟机内存监控_java虚拟机内存监控工具jps,jinfo,Jstack,jstat,jmap,jhat使用...

    将会打印出很多jvm运行时参数信息,由于比较长这里不再打印出来,可以自己试试,内容一目了然 Jstack(Stack Trace for Java):JVM堆栈跟踪工具 jstack用于打印出给定的j ...

  4. java查看内存泄露_Java内存泄露如何排查

    Java内存泄露是常常出现的问题,Java攀登网进行了该问题的整理,具体的如下所示: 1.2 内存泄露Memory Leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内 存泄露危害可以忽略 ...

  5. docker java 内存溢出_java内存溢出

    与此问题类似jmeter Error occurred during initialization of VM Could not reserve enough space_萧木易的博客-CSDN博客 ...

  6. java list 内存溢出_java内存溢出的2种情况

    java程序员在面试经常被问到内存om之后如何处理,但是实际在工作中遇到此类问题的情况却又非常少. 进过自己一番总结内存溢出主要分为2种: 一.堆内存溢出 OutOfMemoryError 从jvm的 ...

  7. JAVA 继承内存模型_Java内存模型

    JVM的组成 类加载器(classloader) 执行引擎(execution engine) 运行时数据区域(runtime data area) 对于Java程序员来说,在虚拟机自动内存管理机制下 ...

  8. java内存规范_Java内存模型-jsr133规范介绍

    最近在看<深入理解Java虚拟机:JVM高级特性与最佳实践>讲到了线程相关的细节知识,里面讲述了关于java内存模型,也就是jsr 133定义的规范. 系统的看了jsr 133规范的前面几 ...

  9. java gc原理_Java内存管理以及GC工作原理

    1.内存管理简介 内存管理的职责为分配内存,回收内存. 没有自动内存管理的语言/平台容易发生错误. 典型的问题包括悬挂指针问题,一个指针引用了一个已经被回收的内存地址,导致程序的运行完全不可知. 另一 ...

最新文章

  1. Arduino可穿戴教程之第一个程序——Blink(一)
  2. redis取出list最边的一个_这几个Redis使用技巧,让你的程序快如闪电
  3. git 添加review的相关操作
  4. php 依赖注入框架,依赖注入模式(Dependency Injection)
  5. 3D重建 | 近5年前沿方法引用量TOP10工作汇总
  6. 【MySQL】MySQL中的查询语句的详解----等值连接、左连接、右连接、全连接
  7. print python 带回车_python标准库threading源码解读【二】
  8. 聊聊Elasticsearch的BootstrapCheck
  9. 《生物信息学》——李霞;;生信概念
  10. 三层交换机LACP协议对 L2/L3端口,报文处理实验
  11. 项目部署发布CruiseControl工具介绍
  12. CSS解读之box-sizing属性
  13. AutoSAR入门到精通讲解 (AuroSAR-CP描述) 1.1 AutoSAR-CP简介
  14. vi,vim文本编辑器
  15. java中二维数组Array
  16. Set 直接转成 数组
  17. c语言access码大小写A转换,字母大小写互相转换 ASCII码转化符号问题
  18. tplink WR740N v4 WR941N v6 安装openwrt
  19. 负反馈的类型及判定判别方法 及其优点
  20. 论文数据查找和论文参考准确搜索定位

热门文章

  1. 香格里拉是如何策划成功的?
  2. 矩阵并行加速之NENO与SSE
  3. 模拟电路-模拟加法器的设计和仿真
  4. Leetcode1278
  5. csgo手机上看demo_CSGOdemo文件是什么 怎么去查看CSGOdemo文件
  6. 创意简约唯美小清新感恩节蓝色通用PPT模板
  7. 科技圈的“三座大山”正在崩塌中。。。
  8. 微信报修小程序源码(近期维护V3.1.0)
  9. 解决user installations are disabled via policy on the machine错误
  10. 介绍一下xgb_xgboost实战,一篇就好