1.首先我们在我们的服务其上找到我们java服务的pid;

2.我们找到之后输入jmap -heap,得到我们对内存的使用情况

3.分析
MinHeapFreeRatio=n --------------使用率小于 n 的情况下 ,heap 进行收缩

MaxHeapFreeRatio = m---------------使用率大于m 的情况下 ,heap 进行扩张

MaxHeapSize --------------最大堆内存

NewSize 新生代内存大小
MaxNewSize 新生代最大尺寸
OldSize 老年代尺寸
NewRatio eden占比
SurvivorRatio Survivor占比
------------Eden区和Survivor区带都处于新生代中。
MetaspaceSize = 21807104 (20.796875MB)

下面就来分析一下内存新生代和老年代的使用情况:

1.所有通过new创建的对象都分配在堆中分配,可以使用-Xmx和-Xms控制,一个是memory max(Xmx) 一个是memory start (Xms)。
Xmx代表程序最大可以从操作系统中获取的内存数量,Xms代表程序启动的时候从操作系统中获取的内存数量。
堆被划分为新生代和旧生代,新生代又被划分为eden区和Survivor区。
Survivor区又被划分为from和to两个。

一个对象的创建会被划分到eden区,当第一次gc之后,如果对象还存活下来,就会被移动到survivor区,每次进行gc,对象的年龄就会增加一,当达到一定的阈值时,对象就会被移动到old老年带。
因为新生代的对象经常被gc回收掉,所以采用的gc算法一般是复制算法。复制算法的思想是:将内存分为两个区域,from和to,每次只用一块区域,当一块区域的内存用完,就将还存活的对象复制到另一块区域中,复制算法不会产生内存碎片。
对象创建的时候只会存在与eden区和from区,to区是空的,进行gc时,eden所有存活的对象都会复制到to区,而from区中的对象,会根据他们的年龄决定他们的去向:年龄达到一定阈值的对象会复制到老年代old,没有达到的对象会复制到to区。经过这次gc,eden区的对象和from区的对象就全部清空。之后,gc后空的from区现在转变为to区,gc后复制对象进去的to区转变为from区,再次等待下次gc。总之,to区永远时空的。知道转换前的to区被填满,“To”区被填满之后,会将所有对象移动到年老代中。

jvm对内存进行的分析相关推荐

  1. 导出jvm的内存快照进行分析

    查找对应的进程id(PID) 使用 tasklist | findstr javaw.exe 或者知道被占用的端口使用 netstat -nao | findstr "8080" ...

  2. 生产环境 JVM 内存溢出案例分析

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:blog.csdn.net/prestigeding ...

  3. Linux与JVM的内存关系分析

    Linux与JVM的内存关系分析 原文出处: 美团技术团队 引言 在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 ...

  4. 生产环境JVM内存溢出案例分析

    如果我们所在公司的业务量比较大,在生产环境经常会出现JVM内存溢出的现象,那我们该如何快速响应,快速定位,快速恢复问题呢? 本文将通过一个线上环境JVM内存溢出的案例向大家介绍一下处理思路与分析方法. ...

  5. 生产环境JVM内存溢出案例分析!

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:Nginx 为什么快到根本停不下来? 个人原创100W+访问量博客:点击前往,查看更多 来源:blog.csdn ...

  6. JVM优化系列-详解JVM堆内存分析

    导语   了解过java虚拟机的读者都知道,在JVM的内存可以分为堆内存和非堆内存,在之前的博客中分享了关于JVM常见参数的配置.这次分享的内容主要是对堆和非堆内存参数的配置   在Java程序运行的 ...

  7. 第1篇--基于jdk7和jdk8分析 JVM的内存区域

     基于jdk7和jdk8分析 JVM的内存区域 目录 前言 1.什么是JVM 2.JRE/JDK/JVM是什么关系 3.JVM执行程序的过程 4. JVM的生命周期 5.JVM垃圾回收 一.运行时数据 ...

  8. Linux与JVM的内存关系分析(转)

    引言 在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约600m,Linux自身使用大约800m.从表面上,物理内存 ...

  9. java jvm 查看内存_JVM内存状况查看方法和分析工具(下)

    从以上信息中可看出JVM堆的配置信息,如NewSize.NewRatio.SurvivorRatio等:JVM堆的使用情况,新生代中的Eden Space.From Space.To Space的使用 ...

最新文章

  1. 奇葩注释大盘点,你觉得哪个最牛逼?
  2. Python gui编程pyQt5安装步骤
  3. 判断windows进程是否存在
  4. 这四种攻击单片机的主要技术你了解多少?
  5. CYQ.Data 轻量数据层之路 应用示例一 留言版(四)
  6. 给自己看的squid服务器配置笔记
  7. linux网络编程之-----基础理论篇
  8. springboot-29-security(二)用户角色权限控制
  9. OpenGL基础30:模板测试
  10. 传阿里云盘将开启扩容收费测试:200GB售价 108元/年
  11. Word 打印 PrintOut 方法
  12. 可以自学计算机考证吗
  13. ebay注册流程_2018eBay注册开店流程?
  14. Axure绘制跑马灯
  15. 强化学习实践四:编写通用的格子世界环境类
  16. 电脑键盘功能基础知识,快速入门,抓住这份详细教程
  17. 电脑ps计算机磨皮,用PS磨皮详解教程 -电脑资料
  18. 学计算机女生考研什么专业好就业,适合女生考研易就业的十大专业有哪些
  19. MySQL 表设计的经验准则
  20. HighlightBuilder高亮显示

热门文章

  1. 系统分析与设计大作业实验报告
  2. 因为计算机丢失uxtheme.dll,解决Win10开机提示uxtheme.dll丢失的方法
  3. python - windows 之 SetCursorPOS与GetCursorPos操控鼠标
  4. wifi 驱动 进阶11
  5. 重装oracle接管磁盘阵列,ibm v7000磁盘阵列oracle恢复
  6. WEB和WAP有什么区别前端开发的趋势
  7. 基于python计算包含贝塞尔函数的积分
  8. bzoj-2150 部落战争
  9. 基于h5 canvas的模拟时钟javascript程序
  10. 【附源码】Python计算机毕业设计码码科技公司招投标管理系统