当前位置:首页 > 芯闻号 > 充电吧
[导读]JVM堆内存被分为两部分——年轻代(Young Generation)和老年代(Old Generation)年轻代 年轻代是所有新对象产生的地方。当年轻代内存空间被用完时,就会触发垃圾回收(Mino

JVM堆内存被分为两部分——年轻代(Young Generation)和老年代(Old Generation)

年轻代 年轻代是所有新对象产生的地方。当年轻代内存空间被用完时,就会触发垃圾回收(Minor GC)。年轻代被分为3个部分-Enden区和两个Survivor区。
1.大多数新建的对象都位于Eden区
2.当Eden区被对象填满时,就会执行Minor GC,并把所有存活下来的对象转移到其中一个survivor区。
3.Minor GC同样会检查存活下来的对象,并把它们转移到另一个survivor区。这样在一段时间内,总会有一个空的survivor区。
4.经过多次GC周期后,仍然存活下来的对象会被转移到年老代内存空间。通常这是在年轻代有资格提升到年老代前通过设定年龄阈值来完成的。 年老代 年老代内存里包含了长期存活的对象和经过多次Minor GC后依然存活下来的对象。通常会在老年代内存被占满时进行垃圾回收。老年代的垃圾收集叫做Major GC。Major GC会花费更多的时间。 Stop the World事件 所有的垃圾收集都是“Stop the World”事件,因为所有的应用线程都会停下来直到操作完成(所以叫“Stop the World”)。


因为年轻代里的对象都是一些临时(short-lived )对象,执行Minor GC非常快,所以应用不会受到(“Stop the World”)影响。


由于Major GC会检查所有存活的对象,因此会花费更长的时间。应该尽量减少Major GC。因为Major GC会在垃圾回收期间让你的应用反应迟钝,所以如果你有一个需要快速响应的应用发生多次Major GC,你会看到超时错误。


垃圾回收时间取决于垃圾回收策略。这就是为什么有必要去监控垃圾收集和对垃圾收集进行调优。从而避免要求快速响应的应用出现超时错误。 永久代 永久代或者“Perm Gen”包含了JVM需要的应用元数据,这些元数据描述了在应用里使用的类和方法。注意,永久代不是Java堆内存的一部分。
永久代存放JVM运行时使用的类。永久代同样包含了Java SE库的类和方法。永久代的对象在full GC时进行垃圾收集。
方法区 方法区是永久代空间的一部分,并用来存储类型信息(运行时常量和静态变量)和方法代码和构造函数代码。
内存池 如果JVM实现支持,JVM内存管理会为创建内存池,用来为不变对象创建对象池。字符串池就是内存池类型的一个很好的例子。内存池可以属于堆或者永久代,这取决于JVM内存管理的实现。
运行时常量池 运行时常量池是每个类常量池的运行时代表。它包含了类的运行时常量和静态方法。运行时常量池是方法区的一部分
Java栈内存 Java栈内存用于运行线程。它们包含了方法里的临时数据、堆里其它对象引用的特定数据
Java 堆内存开关 Java提供了大量的内存开关(参数),我们可以用它来设置内存大小和它们的比例。

-Xms 设置JVM启动时堆的初始化大小。 
-Xmx 设置堆最大值。 
-Xmn 设置年轻代的空间大小,剩下的为老年代的空间大小。 
-XX:PermGen 设置永久代内存的初始化大小。 
-XX:MaxPermGen 设置永久代的最大值。 
-XX:SurvivorRatio 提供Eden区和survivor区的空间比例 如果年轻代的大小为10m并且VM开关是-XX:SurvivorRatio=2,那么将会保留5m内存给Eden区和每个Survivor区分配2.5m内存。默认比例是8。 
-XX:NewRatio 提供年老代和年轻代的比例大小。默认值是2
Java垃圾回收 Java垃圾回收会找出没用的对象,把它从内存中移除并释放出内存给以后创建的对象使用,自动垃圾回收。
垃圾收集器是一个后台运行程序。它管理着内存中的所有对象并找出没被引用的对象。所有的这些未引用的对象都会被删除,回收它们的空间并分配给其他对象。
一个基本的垃圾回收过程涉及三个步骤: 标记:这是第一步。在这一步,垃圾收集器会找出哪些对象正在使用和哪些对象不在使用。
正常清除:垃圾收集器会清除不在使用的对象,回收它们的空间分配给其他对象。
压缩清除:为了提升性能,压缩清除会在删除没用的对象后,把所有存活的对象移到一起。这样可以提高分配新对象的效率。
简单标记和清除方法存在两个问题: 效率很低。因为大多数新建对象都会成为“没用对象”。
经过多次垃圾回收周期的对象很有可能在以后的周期也会存活下来。
上面简单清除方法的问题在于Java垃圾收集的分代回收的,而且在堆内存里有年轻代和年老代两个区域 Java垃圾回收类型 Serial GC(-XX:+UseSerialGC):Serial GC使用简单的标记、清除、压缩方法对年轻代和年老代进行垃圾回收,即Minor GC和Major GC。Serial GC在client模式(客户端模式)很有用,比如在简单的独立应用和CPU配置较低的机器。这个模式对占有内存较少的应用很管用。
Parallel GC(-XX:+UseParallelGC):除了会产生N个线程来进行年轻代的垃圾收集外,Parallel GC和Serial GC几乎一样。这里的N是系统CPU的核数。我们可以使用 -XX:ParallelGCThreads=n 这个JVM选项来控制线程数量。并行垃圾收集器也叫throughput收集器。因为它使用了多CPU加快垃圾回收性能。Parallel GC在进行年老代垃圾收集时使用单线程。
Parallel Old GC(-XX:+UseParallelOldGC):和Parallel GC一样。不同之处,Parallel Old GC在年轻代垃圾收集和年老代垃圾回收时都使用多线程收集。
并发标记清除(CMS)收集器(-XX:+UseConcMarkSweepGC):CMS收集器也被称为短暂停顿并发收集器。它是对年老代进行垃圾收集的。CMS收集器通过多线程并发进行垃圾回收,尽量减少垃圾收集造成的停顿。CMS收集器对年轻代进行垃圾回收使用的算法和Parallel收集器一样。这个垃圾收集器适用于不能忍受长时间停顿要求快速响应的应用。可使用 -XX:ParallelCMSThreads=n JVM选项来限制CMS收集器的线程数量。
G1垃圾收集器(-XX:+UseG1GC) G1(Garbage First):垃圾收集器是在Java 7后才可以使用的特性,它的长远目标时代替CMS收集器。G1收集器是一个并行的、并发的和增量式压缩短暂停顿的垃圾收集器。G1收集器和其他的收集器运行方式不一样,不区分年轻代和年老代空间。它把堆空间划分为多个大小相等的区域。当进行垃圾收集时,它会优先收集存活对象较少的区域,因此叫“Garbage First”。你可以在Oracle Garbage-FIrst收集器文档找到更多详细信息。 Java垃圾收集监控

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

May 9, 2024 ---- 据TrendForce集邦咨询研究显示,2023年全球前十大IC设计业者营收合计约1,677亿美元,年增长12%,关键在于NVIDIA(英伟达)带动整体产业向上,其营收年成长幅度高达10...

关键字: NVIDIA IC设计 AI

May 8, 2024 ---- 苹果5月新品发布会推出主打AMOLED屏幕的平板产品,新款Pro版本的AMOLED屏幕采用双层串联结构,目的在于改善AMOLED屏幕长期存在的烧屏及寿命问题,而无需背光模组的优势也迎来史...

关键字: Apple iPad Pro 显示器

尼得科精密部件基于自创立以来在相机产业培育起来的“精密”制造技术,利用精致且高水平的小型振动电机技术,从零开始重新设计与薄型最为适合的磁路,最终实现了厚度仅为1.4mm的*全球超薄型线性致动器“TapSense”。由此,...

关键字: 线性振动致动器 电机

5月8日,海信旗下年轻科技潮牌Vidda在北京发布新品AI电视和三色激光智能投影。作为2024欧洲杯官方指定智能投影。Vidda副总经理郭琛介绍,2023年,Vidda电视在国内线上市场的量占有率近10%,牢牢占据行业前...

关键字: 人工智能 三色激光 投影

现有股东Philip Fayer将转出其绝大部分现有股权,现有股东Novacap和CDPQ将转出其大部分现有股权 主要亮点: 全球领先的支付公司Nuvei与金融科技私募股权投资领域的重要企业Advent通过全现...

关键字: NOVA IP INTERNATIONAL CD

上海2024年5月8日 /美通社/ -- 近年来,随着国家医疗政策改革的红利释放以及企业在研发投入方面不断加码,中国医疗器械产业步入黄金发展期,国内医疗器械企业攻坚关键核心技术,在高端领域不断突破,"出海&qu...

关键字: 显微镜 光学 高精度 质量检测

共创包容性数字未来 新加坡2024年5月8日 /美通社/ -- 5月29日至31日,亚洲旗舰科技平台新加坡亚洲科技大会(Asia Tech x Singapore,简称AT...

关键字: 新加坡 ATX AN TE

北京2024年5月8日 /美通社/ -- 4月28日至29日,以"算力网络点亮AI新时代"为主题的2024中国移动算力网络大会在苏州隆重举行。此次大会旨在构建一个开放协同、融合创新的平台,以推动算网技...

关键字: 网络 中国移动 AI 数字化

深圳2024年5月6日 /美通社/ -- 从4月23日的一场大会开始,到24-26日的IOTE会展节,我们共同见证了物联网领域的最新技术、产品和解决方案的集中展示,感受到了AIoT释放数字经济潜力的巨大能量。今天以展商满...

关键字: IoT 物联网 TE AIOT
关闭
关闭