堆内存模型:

在Java中,堆被划分成两个不同的区域:新生代(Young),老年代(Old)。而Permanent属于永久代(方法区),不属于堆内存。新生代又被分为了三个区域:Eden,from  survivor,to survivor。这样划分的目的是为了使JVM能够更好的管理堆内存中的对象,包括内存分配以及回收。

从图中可以看出: 堆大小=新生代+老年代,默认的,新生代与老年代的比例为1:2(该值可以通过参数-XX:NewRatio指定),即:新生代=1/3堆空间大小,老年代=2/3堆空间大小,其中新生代被细分为Eden何两个Survivor区域,这两个Survivor命名为from和to。默认比例 eden:from:to = 8:1:1,JVM每次只会使用Edem和一块survivor区域来为对象服务,所以无论何时,总有一块survivor是空闲的,因此新生代实际使用内存空间只有90%的新生代空间。

通常我们会根据实际情况(服务器内存大小)对堆内存大小进行调优,内存参数含义如下:

-Xmx    java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4;

-Xms    java虚拟机堆区内存初始内存分配的大小,通常为操作系统可用内存的1/64;

开发过程中,通常会将-Xms 与-Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源。

 -XX:NewSize     新生代初始内存的大小,应该小于-Xms的值;

-XX:NewRatio    Yong 和 Old的比例,比如值为2,则Old是Yong的2倍,即Yong Generation占据内存的1/3;

-XX:Maxnewsize     Yong的最大值大小;

-Xmn    对 -XX:newSize、-XX:MaxnewSize两个参数的同时配置,也就是说如果通过-Xmn来配置新生代的内存大小,那么-XX:newSize = -XX:MaxnewSize = -Xmn;

-XX:Surviorratio     Eden和一个Suivior的比例,比如值为5,即Eden是To(S2)的比例是5,(From和To是一样大的),此时Eden占据Yong Generation的5/7

java虚拟机对非堆区内存配置的两个参数:
-XX:PermSize    非堆区初始内存分配大小(方法区)
-XX:MaxPermSize    对非堆区分配的内存的最大上限(方法区)。

原文地址:https://blog.csdn.net/u013967628/article/details/84527815

JVM堆内存管理与自定义分配参数详解的更多相关文章

  1. JVM内存管理------垃圾搜集器参数精解

    本文是GC相关的最后一篇,这次LZ只是罗列一下hotspot JVM中垃圾搜集器相关的重点参数,以及各个参数的解释.废话不多说,这就开始. 垃圾搜集器文章传送门 JVM内存管理------JAVA语言 ...

  2. linux的vm.overcommit_memory的内存分配参数详解

    公司的redis有时background save db不成功,通过log发现下面的告警,很可能由它引起的: [13223] 17 Mar 13:18:02.207 # WARNING overcom ...

  3. angular 自定义指令参数详解【转】【个人收藏用】

    restrict:指令在dom中的声明形式 E(元素)A(属性)C(类名)M(注释) priority优先级:一个元素上存在两个指令,来决定那个指令被优先执行 terminal:true或false, ...

  4. angular 自定义指令参数详解

    restrict:指令在dom中的声明形式 E(元素)A(属性)C(类名)M(注释) priority优先级:一个元素上存在两个指令,来决定那个指令被优先执行 terminal:true或false, ...

  5. 【转】JVM 堆内存设置原理

    堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Generation),主要存放的是Java类定 ...

  6. [转]JVM 堆内存设置原理

    堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Generation),主要存放的是Java类定 ...

  7. JVM 堆内存设置原理

    堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Generation),主要存放的是Java类定 ...

  8. JVM 堆内存设置原理(转)

    堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Generation),主要存放的是Java类定 ...

  9. JVM堆内存监测的一种方式,性能调优依旧任重道远

    上月,由极客邦.InfoQ和听云联合主办2016 APMCon中国应用性能管理大会圆满落下帷幕.会上,Java冠军Martijn Verburg进行了一场Java and the Machine的分享 ...

随机推荐

  1. objectarx之判断给定的三点是否共线

    bool ThreePointIsCollinear(const AcGePoint2d &pt1, const AcGePoint2d &pt2, const AcGePoint2d ...

  2. npm上面实用的第三方工具包

    npm上面实用的第三方工具包 live-server 作用:为页面提供实时刷新重载的功能,并且能提供一个http服务器 官方地址:https://www.npmjs.com/package/live- ...

  3. SDUT-3402_数据结构实验之排序五:归并求逆序数

    数据结构实验之排序五:归并求逆序数 Time Limit: 50 ms Memory Limit: 65536 KiB Problem Description 对于数列a1,a2,a3-中的任意两个数 ...

  4. OSGi Capabilities

    OSGi bundle的Capability就是这个bundle所具有的能力. 就像淘宝上的每个店铺一样,它会说明自己都卖哪些东西,也就是Provide-Capability 我们这些剁手党就会根据自 ...

  5. shops

    #!/usr/bin/env python #coding:utf- import urllib2,sys,re,os,string reload(sys); sys.setdefaultencodi ...

  6. 【OI】快读

    不必多说. #include <cstdio> #include <cstring> int read(){ ,f = ; char c = getchar(); ') { ; ...

  7. Java安全——密钥那些事

    标签(空格分隔): Java 安全 概念 密钥是加密算法不可缺少的部分.密钥在安全体系中至关重要,正如其名,私密的钥匙,打开安全的大门.密钥分两种:对称密钥和非对称密钥.非对称密钥里又包含公开密钥和私 ...

  8. jQuery动态加载动画spin.js

    在线演示 本地下载

  9. mac下的抓包工具Charles

    在mac下面,居然没有好的抓包工具,这让我十分纠结,毕竟不可能为了抓一个http包就跑到win下折腾.或许有人说tcpdump这么好的工具,你怎么不用.说实话,tcpdump太复杂了,我还没有细看,再 ...

  10. python LEGB原理简要介绍