问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

jvm堆内存和非堆内存(小白入门文,各博客视频基础总结)

发布网友 发布时间:2022-11-28 14:24

我来回答

1个回答

热心网友 时间:2023-10-23 10:05

一:堆内存和非堆内存定义
Java虚拟机具有一个堆(Heap),堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是Java虚拟机启动时创建的。在JVM中堆之外的内u你成为非堆内存(Non-heap memory)。
堆内存以及相应垃圾回收算法
1.堆的大小可以固定,也可以扩大和缩小,堆内存不需要是连续空间。
2.对象创建后进入Eden。年轻代分为Eden和Survivor。Survivor由FromSpace和ToSpace组成。Eden区占大容量,Survivor占小容量,默认比例8:1:1。
MinorGC:采用复制算法。首先把Eden和ServivorFrom区域中存活的对象赋值到ServivorTo区域(如果对象年龄达到老年标准/ServivorTo位置不够了,则复制到老年代),同时对象年龄+1,然后清空Eden和ServivorFrom中的对象。然后ServivorTo和ServivorFrom互换。
3.老年代
老年代存放生命周期长的内存对象。
老年代对象相对稳定,所以不会频繁GC。在进行MajorGC前一般都先进行一次MinorGC,使新生代的对象进入老年代,导致空间不够用时才触发。当无法找到足够大的连续空间分配给新晋的对象也会提前触发MajorGC进行垃圾回收。
MajorGC:如果使用CMS收集器,采用标记-清除算法。首先扫描老年代,标记所有可回收对象,标记完成后统一回收所有被标记对象。同时会产生不连续的内存碎片。碎片过多会导致以后程序运行需要分配较大对象时,无法找到足够的连续内存,而不得已再次出发GC。否则采用标记-压缩算法。
标记-压缩:在标记可回收对象后,将不可回收对象移向一端,然后清除标记对象。
当老年代也满了装不下时,抛出OOM异常。
二:永久代
内存中永久保存的区域,主要存放Class和Meta(元数据)的信息,Class在被加载的时候被放入永久区域。他和存放实例的区域不同,GC不会再主程序运行期对永久区进行清理。所以也可可能导致永久代区域随着加载Class的增多而胀满,抛出OOM。
Java8中,永久代已经被移除,被一个成为“元数据区”(元空间)的区域所取代。
元空间的本质与永久代类似,都是JVM方法区的实现。不过元空间使用本地内存,永久代在JVM虚拟机中。因此,默认情况下,元空间的大小受本地内存*。类的元数据放入native memory,字符串常量池和类的静态变量放入java堆中,这样可以加载多少类的元数据就不再由MaxPermSize控制,而是由系统实际可用空间控制。
1元空间解决了永久代的OOM问题,元数据和class对象在永久代容易出现性能问题和内存溢出。
2类的方法信息等比较难确定其大小,对于永久代的大小指定比较困难,小永久代溢出,大老年代溢出。
3永久代会为GC带来不必要的复杂度,回收效率低。
三:堆内存参数调优
1.-Xms 设置初始分配内存大小,默认物理内存1/64
2.-Xmx 设置最大分配内存,默认物理内存1/4
long maxMemory = Runtime.getRuntime().maxMemory(); long totalMemory = Runtime.getRuntime().totalMemory(); System.out.println("最大分配内存"+maxMemory/(double)1024/1024+"MB "+maxMemory/(double)1024/1024/1024+"GB"); System.out.println("默认分配内存"+totalMemory/(double)1024/1024+"MB "+totalMemory/(double)1024/1024/1024+"GB");

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
发摅解释 摅的组词有哪些 摅字能组哪些词 检测电脑配置的软件电脑硬件检测权威软件有哪几个 查看电脑参数的软件什么软件可以全面检测显示出电脑硬件参数数据_百度... 有没有可以查自己电脑配置的软件啊??? 芯片程序解密哪家好 ...文章怎么突然间阅读量开始大减,从几百掉到个位数。 百家号怎么才个位数播放量?个位数播放量怎么算? 保本收益投资合法吗 JVM对象头(header) 07给女朋友讲讲并发编程-Monitor概念 怎样设计一个热交换器,利用现有的电热水器和家里的暖气换热。 怎怎么切换换热器 朋友们 谁能给我解释一下电热水器和换热器之间的工作原理吗?带图片最好 九龙湖数智公园离九颂山河春江阅多远 龙湖中德开春江悦茗降价了吗 临桂万达春江悦开工了吗 南昌九颂山河春江悦造钢层是哪几楼? 宁波春江悦是连廊房吗 龙湖春江悦茗怎么样?好不好?值不值得买? 南昌九颂山河春江悦还有升值空间么 丰城九颂山河春江悦是属于哪个街道 宝骏e200外壳什么材质 宝骏电动汽车e100与e200的区别? 新能源汽车宝骏e200能上高速吗 宝骏e200手刹在哪 外墙装饰中的grc构件是什么 过失致人毁容怎么判 2:中学历史教学方法选择和运用的基本依据有哪些 如何查看医保有没有交钱 lm是什么车牌子 王者荣耀庄周什么技能 惠普g14休眠之后就一直黑屏无反应 惠普CQ36休眠后黑屏 惠普笔记本中途合屏待机了一会,目前一直黑屏 银行汇票和银行承兑汇票有何区别?详细介绍各自的特点用处,谢谢!_百度知... 中通快递是什么性质的快递公司 上海则天贸易有限公司是中通快递吗 中银e贷有公积金可以过吗? 中银e贷和房贷有关系吗? 中银e贷没有公积金可以申请吗? 红岩读后感1000--1500 不适合健身的人群有哪些 什么人不适合健身 白鸭绒有味道就是质量不好吗? 农村集体经济组织能设立合伙企业吗 兴宁宁江西堤三期为何迟迟不动工 给物流产业园、汽车产业园、旅游产业园!分别起个好听点的名字叫什么好呢!希望大家帮忙!吸引人的! 卫裤会缩水吗 卫裤会起球吗 为什么读卡器连接到电脑,我的电脑里却不显示可移动磁盘