怎么去配置一个新生代和一个老年代的一个比例,新生代的比列和老年代的比例怎么配,基本原则是遵循什么原则,遵循1:2,为什么要遵循1:2,1:2是大致的,你们也不能说完全是1:2,这个你们要看什么公司,什么项目,你们可以把老年代设大一点,新生代设小一点,基本原则是让新生代设置尽量小一点,让垃圾回收在新生代回收多一点,老年代因为比例比较大,空间比较足,他的回收次数会稍微少一点,使用示例: -Xms20m -Xmx20m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC-XX:NewRatio=2,说明:堆内存初始化值20m,堆内存最大值20m,新生代最大值可用1m,eden空间和from/to空间的比例为2/1新生代和老年代的占比为1/2,这个其实已经有个说明了,堆内存的初始值是20M,堆内存的最大值也是20M,-XX:SurvivorRatio=2这个参数我就不说了,刚才已经讲过了,新生代的eden区和from/to的比例是1:2的关系,-XX:NewRatio=2这个是新生代和老年代的比例是1:2,我们之前的是多少G的吗,8G内存的,现在服务器标配是8G,也有32G的,那说明是很有钱了,有一台32G的服务那就很好了那非常非常贵的,基本上都是好几万的,我是按照8G的内存来配,这个时候一比二的时候怎么办呢
package com.learn.test;/*** 配置新生代和老年代* 一般很少用4G服务器的* 基本上服务器标配都是8G的* 我之前的项目都是8G内存* 很少有4G内存的* Redis有的人去买阿里云的缓存* 这样运维就不用管了* 这个看场景* -XX:NewRatio=2这个参数表示一比二的关系* -Xms20m -Xmx20m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC -XX:NewRatio=2* 这个参数配置一下然后运行一遍* [GC (Allocation Failure) [DefNew: 3261K->1664K(5120K)* 这个时候你会发现怎么回收次数怎么这么多* 回收了3次* 你们把参数给看一下* 这次GC回收回收了3次* 新生代与老年代占比 1/2 13696K* 这个时候大家可以算笔账* 老年代现在是13696K* eden space 3456K,from space 1664K,to   space 1664K,把这个总和乘以2* 如果大致等于13696K那说明是对的* 是不是大致等于这个数了* 13568是不是快接近13696K* 我们来看一下默认的新生代和老年代的占比关系* -XX:+PrintGCDetails -XX:+UseSerialGC* 我们去掉一些参数,然后运行如上参数* 你们知道现在的新生代和老年代的占比是多少吗* 这个时候我们可以把这个计算一下* eden space 34944K,from space 4352K,to   space 4352K,* the space 87424K,* 34944K+4352K+4352K=43648K* 87424K/43648K=2* 1:2,新生代占1/3,老年代占2/3* 不同的JVM其实是有很大的差别的* 6之前到现在其实是有非常大的变化的* 垃圾收集器开始的时候只有串行和并行* 现在都是G1和CMS收集器* 技术总监一般不会做这个事情的,* 一般是架构师做的* 我们生产环境不是配置在eclipse里面* 而是配置在TOMCAT里面的* * @author Leon.Sun**/
public class Test003 {public static void main(String[] args) {byte[] b = null;for (int i = 0; i < 10; i++) {b = new byte[1 * 1024 * 1024];}}}

设置新生代与老年代比例关系相关推荐

  1. jvm对象从新生代到老年代_深入理解jvm内存模型以及gc原理

    整体架构 Jvm = 类加载器 + 执行引擎 + 运行时数据区域 类加载器 ● 作用 类加载器是将编译好的class文件加载到内存中,并进行验证.初始化等步骤,形成能被jvm直接使用的类型. ● 加载 ...

  2. JVM新生代和老年代的参数——一次ElasticSearch的jvm参数调整

    在测试服务器上发现 ES 进程总是挂掉,于是看 ES 的 gc 情况: 先查到进程的 PID 号,然后使用 jstat 指令: jstat -gc PID 5000 5000 是毫秒,每 5 秒刷新一 ...

  3. 34.对象 GC,GC属性,影响GC的因素,GC步骤,GC算法,安全区/安全区域,新生代,老年代等介绍

    34.对象 GC,GC属性,影响GC的因素,GC步骤,GC算法,安全区/安全区域,新生代,老年代等介绍 34.1.GC属性 34.2.影响GC的因素 34.3.GC步骤 34.3.1.Mark 34. ...

  4. 1、虚拟机内存管理、运行时数据区、线程共享区、Java堆、新生代、老年代、Eden区域分配、方法区、线程独占区、虚拟机栈

    1.Java虚拟机内存管理 1.1.运行时数据区[Runtime Data Area] 1.1.1.线程共享区 1.1.1.1.Java堆[heap] 1.1.1.1.1.新生代.老年代.Eden区域 ...

  5. jvm对象从新生代到老年代_JVM内存管理、JVM垃圾回收机制、新生代、老年代以及永久代...

    内存模型 JVM运行时数据区由程序计数器.堆.虚拟机栈.本地方法栈.方法区部分组成,结构图如下所示. JVM内存结构由程序计数器.堆.栈.本地方法栈.方法区等部分组成,结构图如下所示: 1)程序计数器 ...

  6. Java GC、新生代、老年代、gc日志分析

    1.堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象.  在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新 ...

  7. jvm详解 - 新生代与老年代

    *************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 J ...

  8. JVM堆内存(新生代,老年代,Xms,Xmx)学习整理

    JVM堆内存 jvm堆内存主要分为新生代和老年代,当垃圾收集器触发GC的时候会对堆内存长时间没用的对象分代进行回收,新生代和老年代内存占比为1:2. 文章目录 JVM堆内存 新生代 1.Eden区 2 ...

  9. JVM中的新生代和老年代(Eden空间、两个Survior空间)

    现有的主流JVM分别是HotSpot和JRockit,主要研究对象也是这两个.这篇文章里,我们只研究HotSpot,也就是所谓的Sun JVM.目前阶段,Sun的GC方式主要有CMS和G1两种.考虑到 ...

最新文章

  1. 单例模式及getInstance()的用法
  2. Fiddler (三) Composer创建和发送HTTP Request
  3. HTML5 之前的视频播放格式
  4. Placeholder in IE8 and older
  5. .mmp怎么打开查看?
  6. mysql按月分列统计_实现mysql按月统计的教程
  7. 输入一个正整数求所有素数因子_一起来聊聊素数的两个性质
  8. [原创]mybatis中整合ehcache缓存框架的使用
  9. 2021年世界科技进展100项
  10. 两个字和三个字一样宽_武汉国庆出行 记好三个字
  11. linux鼠标键盘被禁用了,debian squeeze下鼠标、键盘突然被系统禁用
  12. sql2000数据类型对应的数值_Qlikview---数据类型
  13. hnu2021小学期程序设计 棋盘
  14. Leetcode 22. 括号生成(递归+去重)
  15. 最大公约数PHP算法,php计算两个整数的最大公约数常用算法小结
  16. Win32可执行文件的开发过程 - Win32汇编语言008
  17. 网上订餐系统需求分析报告
  18. linux安装RarLinux
  19. Golang reflect.method 使用方法
  20. 记忆里:小时候的农村青山绿水,鸟语花香,彩蝶飞飞

热门文章

  1. 强化学习算法Policy Gradient
  2. 坚持己见还是随波逐流
  3. ECMall如何在后台添加模板编辑页
  4. 北京.net俱乐部博客园小组成立了
  5. Linux 运维入门到跑路书单推荐
  6. 导入不了css,CSS不导入。
  7. mysql xtrabackup 主从_使用 Xtrabackup 在线对MySQL做主从复制
  8. MySQL高级 - 存储引擎 - 选择原则
  9. 【思考?】什么时候会触发这个策略呢?
  10. MyBatis 插件原理与自定义插件-代理和拦截是怎么实现的?