JVM的内存模型和优化方式

java一生之敌
• 阅读 316

一、JVM的内存模型

1.JVM的内存模型和优化方式 其中s0,s1为幸存区; 当有一个对象产生时,如果是大对象,那么会分配到老年代中,其他对象会分配到年轻代的Eden区,大对象分配到老年代是为了让他不及时被垃圾回收器回收,释放它占用过的内存,小的对象在经过15次GC后进入老年代。当GC执行时,对象会放在s0中,为这个对象加1,当第二次GC后,s0中的对象进入s1中,又为当前对象加1,知道如此反复加到15时,对象进入老年代。

为何大对象进入老年代

假设大对象最后会晋升老年代,而新生代是基于复制算法来回收垃圾的,由两个Survivor区域配合完成复制算法,如果新生代中出现大对象且能屡次躲过GC,那这个对象就会在两个Survivor区域中来回复制,直至最后升入老年代,而大对象在幸存区里来回复制移动,就会消耗更多的时间;
而且大对象在没有被GC回收时,在幸存区中来回移动时(因为幸存区中的内存比较小)会占用大量幸存区的内存,导致后续不够15此的对象进入老年代,老年代对象多了,会导致频繁的GC,而老年代GC消耗资源>年轻代消耗的资源

二、JVM的优化方式(减少GC机制的执行)

1.设置一个合适的堆大小 2.设置大对象直接进入老年代

暂时就写这么多 后续以后了解到在进行补充!!!!!!!!!!!!!!!!!!!!!!!

点赞
收藏
评论区
推荐文章
红烧土豆泥 红烧土豆泥
2年前
(转载)Java内存区域(运行时数据区域)和内存模型(JMM) - czwbig
转载自:Java内存区域和内存模型是不一样的东西,内存区域是指Jvm运行时将数据分区域存储,强调对内存空间的划分。而内存模型(JavaMemoryModel,简称JMM)是定义了线程和主内存之间的抽象关系,即JMM定义了JVM在计算机内存(RAM)中的工作方式,如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java
Wesley13 Wesley13
2年前
JAVA工程师成神道路
一、基础篇1.1JVM1.1.1.Java内存模型,Java内存管理,Java堆和栈,垃圾回收http://www.jcp.org/en/jsr/detail?id133http://ifeve.com/jmmfaq/1.1.2.了解JVM各种参数及调优1.1.3.
Wesley13 Wesley13
2年前
Java工程师成神之路~
一、基础篇1.1JVM1.1.1.Java内存模型,Java内存管理,Java堆和栈,垃圾回收http://www.jcp.org/en/jsr/detail?id133http://ifeve.com/jmmfaq/1.1.2.了解JVM各种参数及调优1.1.3.
Stella981 Stella981
2年前
JVM内存模型和类加载机制
JVM内存模型Java代码是运行在Java虚拟机(JVM)上的,Java虚拟机通过解释执行(解释器)或编译执行(编译器)来完成。Java内存模型分为5个部分:方法区(MethodArea),Java堆(Heap),Java栈(VMStack),本地方法栈(NativeMethodStack),程序计数器(PC寄存器)!(ht
Wesley13 Wesley13
2年前
Java工程师成神之路
一、基础篇1.1JVM1.1.1.Java内存模型,Java内存管理,Java堆和栈,垃圾回收http://www.jcp.org/en/jsr/detail?id133http://ifeve.com/jmmfaq/1.1.2.了解JVM各种参数及调优
Wesley13 Wesley13
2年前
Java8内存模型
<divclass"htmledit\_views"<h1<aname"t0"</a一、JVM内存模型</h1<p</p<p<spanstyle"fontfamily:'宋体';"内存空间</span(RuntimeDataArea)中可以按照是否线程共享分为两块,线程共享的是方法区(MethodArea)和堆
Wesley13 Wesley13
2年前
Java运行时数据区域
两个名词的对比java内存模型定义了线程和主内存之间的抽象关系,即Jvm在计算机内存中的工作方式,控制线程之间的通信。java内存区域内存区域是指Jvm运行时将数据分区域存储,强调对内存空间的划分。今天主要总结一下Java运行时的数据区域Java运行时数据区域
Stella981 Stella981
2年前
JVM内存模型——JAVA的根基
抽象!(https://oscimg.oschina.net/oscnet/b941a038303f37cfceb7d3b4d3f3d34646d.jpg)解析程序计数器!(https://oscimg.oschina.net/oscnet/a11b615
Wesley13 Wesley13
2年前
Java多线程之内存可见性
Java多线程之内存可见性一、Java内存模型介绍什么是JMM?Java内存模型(JavaMemoryModel)描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取出变量这样的细节所有的变量都存储在主内存中每个线程都
Stella981 Stella981
2年前
JVM的艺术—JAVA内存模型
\喜欢文章,动动手指点个赞\引言亲爱读者你们好,关于jvm篇章的连载,前面三章讲了类加载器,本篇文章将进入jvm领域的另一个知识点,java内存模型。彻底的了解java内存模型,是有必要的。只要掌握了java的内存模型,内存空间分为哪些区域,才能更好地理解,java是如何创建对象以及如何分配对象的空间。对后续的jvm调优打下坚实
java一生之敌
java一生之敌
Lv1
切他后路
文章
3
粉丝
1
获赞
3