由上图可以看出:

  堆中分为新生代(占堆1/3内存)和老年代(占堆2/3内存),

  新生代又分为Eden区(占新生代内存的8/10)和survivor区(占新生代内存的2/10),

  survivor区又分为from区和to区(各占新生代内存的1/10)

我们知道new出来的对象都是方在堆里面,那么具体在堆里面是怎么样的呢?

1、刚开始new出来的对象放在Eden区

2、等到Eden放满之后,就会进行一次minor gc,清除无效对象并将存活的对象移入from区(第一次minor gc),Eden又可以继续存放对象

3、Eden再次放满之后,再进行minor gc,清除无效对象并将Eden区的存活对象和from区的存活对象一起移入to区,Eden又可以继续存放对象

4、Eden再次放满之后,再进行minor gc,清除无效对象并将Eden区的存活对象和to区的存活对象一起移入from区,Eden又可以继续存放对象

5、之后一直重复3和4的操作,直到from区或者to区中存活对象的年龄超过15岁(每进行一次minor gc后存活对象的年龄加1),在那一次minor gc后会将年龄超过15岁的存活对象移入老年代。(ps:可以通过-XX:MaxTenuringThreshold来设置对象进入老年代的年龄阔值)

6、直到老年代被放满,此时会发生full gc,清除所有区域(包括堆和方法区)的无效对象。(注意:每次发生full gc都会发生“STW”也就是“Stop The Word ”,会暂停其他所有线程。这在浏览器或者客户端就表现为卡顿)

重点:

jvm调优方向:

1、一般来说发生minor gc的时间是非常短的,一般不需要进行调优,但是当发生minor gc的次数非常多的时候才需要进行调优。减少发生minor gc的次数(一般用不到)

2、full gc的速度一般比minor gc慢十倍,而且都会发生STW现象。

3、jvm调优的最终目的有两个:1)减少发生full gc的时间。2)减少发生full gc的次数(最主要的调优方向)

堆内存动态分配情况和jvm调优方向的更多相关文章

  1. 深入理解JAVA虚拟机(内存模型+GC算法+JVM调优)

    目录 1.Java虚拟机内存模型 1.1 程序计数器 1.2 Java虚拟机栈 局部变量 1.3 本地方法栈 1.4 Java堆 1.5 方法区(永久区.元空间) 附图 2.JVM内存分配参数 2.1 ...

  2. java内存管理之垃圾回收及JVM调优

    GC(garbage Collector 垃圾收集器)作用:a.内存的动态分配:b.垃圾回收注:Java所承诺的自动内存管理主要是针对对象内存的回收和对象内存的分配. 一.垃圾标记 程序计数器.Jav ...

  3. JVM性能调优(3) —— 内存分配和垃圾回收调优

    前序文章: JVM性能调优(1) -- JVM内存模型和类加载运行机制 JVM性能调优(2) -- 垃圾回收器和回收策略 一.内存调优的目标 新生代的垃圾回收是比较简单的,Eden区满了无法分配新对象 ...

  4. 7.JVM调优-方法区,堆,栈调优详解

    通常我们都知道在堆空间新生代Eden区满了,会触发minor GC, 在老年代满了会触发full GC, 触发full GC会导致Stop The World, 那你们知道还有一个区域满了一会触发Fu ...

  5. 【JVM】JVM 概述、内存结构、溢出、调优(基础结构+StringTable+Unsafe+ByteBuffer)

    什么是 JVM ? 定义 Java Virtual Machine - java 程序的运行环境(java 二进制字节码的运行环境) 好处 一次编写,到处运行 自动内存管理,垃圾回收功能 数组下标越界 ...

  6. JVM 调优 内存调优 CPU 使用调优 锁竞争调优 I/O 调优

    Twitter 工程师谈 JVM 调优 2016年03月24日 10:22:30 wenniuwuren https://blog.csdn.net/wenniuwuren/article/detai ...

  7. JVM调优之经验

    在生产系统中,高吞吐和低延迟一直都是JVM调优的最终目标,但这两者恰恰又是相悖的,鱼和熊掌不可兼得,所以在调优之前要清楚舍谁而取谁.一般计算任务和组件服务会偏向高吞吐,而web展示则偏向低延迟才会带来 ...

  8. 技能篇:linux服务性能问题排查及jvm调优思路

    只要业务逻辑代码写正确,处理好业务状态在多线程的并发问题,很少会有调优方面的需求.最多就是在性能监控平台发现某些接口的调用耗时偏高,然后再发现某一SQL或第三方接口执行超时之类的.如果你是负责中间件或 ...

  9. jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)

    文章同步发布于github博客地址,阅读效果更佳,欢迎品尝 运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎 ...

随机推荐

  1. 【安全通告】关于 DolphinScheduler 漏洞情况的说明

    点击上方 蓝字关注我们 [安全通报] [影响程度:低] Apache DolphinScheduler 社区邮件列表最近通告了 1 个漏洞,考虑到有很多用户并未订阅此邮件列表,我们特地在此进行情况说明 ...

  2. 成为 Apache 贡献者,从提交第一个简单 PR 开始!

    开源之路,PR 走起 ! ---全球最大同性交友社区 1 fork 以下实例以 incubator-dolphinscheduler 海豚调度为例进行操作 从远端仓库* https://github. ...

  3. 面试突击75:SpringBoot 有几种读取配置文件的方法?

    Spring Boot 中读取配置文件有以下 5 种方法: 使用 @Value 读取配置文件. 使用 @ConfigurationProperties 读取配置文件. 使用 Environment 读 ...

  4. CSS 选择器(二):子代选择器(>)

    后代选择器 后代选择器选择的范围广,范围是当前节点的所有子节点,包括其直接子节点. <div id="app"> <div>items-1 <div& ...

  5. 定语从句"介词+which/whom"的用法

    介词+which [例句]My elder sister works in the famous university. She graduated from the famous universit ...

  6. [java]基础学习HELLOWORLD系列

    (一)手把手教你做JDK环境变量配置 步骤 1 : 首先看配置成功后的效果 点WIN键->运行(或者使用win+r) 输入cmd命令 输入java -version 注: -version是小写 ...

  7. ARC125E - Snack (网络流)

    题面 有 N N N 种糖果, M M M 个小孩子,第 i i i 种糖果有 A i A_i Ai​ 个,第 i i i 个孩子不能有超过 B i B_i Bi​ 个同种类型的糖果,第 i i i ...

  8. Python自学教程8-数据类型有哪些注意事项

    不知不觉,python自学教程已经更新到第八篇了,再有几篇,基本的语法就介绍完了. 今天来总结一下数据类型有哪些需要注意的地方. 元组注意事项 元组是另一种经常使用到的数据类型,看上去和列表差不多.它 ...

  9. Ubuntu系统apt添加第三方PPA源

    一.前言 1.1目的 在使用Ubuntu时往往apt源会自带很多常用软件,但是大部分都是比较老的版本,本文主要是为了实现以下两个目的: 通过添加第三方的PPA源解决软件版本过低或者没有安装包的情况: ...

  10. KingbaseES 如何把一个schema下的所有对象访问权限授权给其他用户

    用户需求:新建一个用户 B,需要能够查询A用户的所有表,并且对以后新建的表也要有select权限. 问题分析:对于现有的表可以通过动态sql批量进行授权,但是未来新建的表要如何进行授权呢? 查询了帮助 ...