JAVA GC 简单总结

GC分代

GC的英文全拼是Garbage Collection,意思是垃圾收集。

Java 将堆内存分为三代来管理: - 年轻代 (Young Generation) - 年老代 (Old Generation) - 永久代 (Perm Generation)

年轻代:又分为EdenFromTo,其中FromTo又统称为Survivor Spaces(幸存区)。年轻代大小可以由-Xmn来控制,也可以用-XX:SurvivorRatio来控制EdenSurvivor的比例,使用–XX:NewRatio来指定新生代和年老代的大小比例。

年老代:用来存放多次垃圾回收依然存活的对象。

永久代:来存放方法区。可通过-XX:PermSize-XX:MaxPermSize来指定最小值和最大值。

正常情况下,一个对象从创建到销毁,应该是从Eden,然后到Survivor Spaces(幸存区),再到Old Generation(年老代),最后在某次GC下消失。也可能一个对象直接在Eden里死掉,也可能一直在Old Generation(年老代)存活。

GC种类

Java GC分为两类:

  • Minar GC
  • FULL GC
  • Major GC

Minar GC:从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC。

Major GC:是清理老年代。

FULL GC:是清理整个堆空间—包括年轻代和老年代。

GC的时候,会暂停全世界(stop-the-world),意思是停止所有的应用线程,所以要避免不必要的GC已提高性能。

GC日志

-XX:+PrintGCDetails打印日志详情。

-XX:+PrintGCTimeStamps打印时间戳。

-Xloggc输出GC日志到文件。

时间: 2024-10-27 03:54:45

JAVA GC 简单总结的相关文章

Java GC 概念摘要

很长时间,我想Java的GC做一个小小的总结,他有没有时间.根据最近看了java paper向上java gc文章,我觉得好,读读.顺便说一下,总结下. java paper的GC文章地址,里面有非常多java技术文章.写的都不错. 1.Java GC 简单介绍 JVM的垃圾回收机制使开发人员不必过多考虑内存的申请与释放,这样减少了软件开发的成本和语言的学习成本. 不同的JVM对GC的实现是不同的,眼下Oracle维护着两种JVM.JRockit JVM,HotSpot JVM. 本文讨论的JV

jvm系列:Java GC 分析

Java GC就是JVM记录仪,书画了JVM各个分区的表演. 什么是 Java GC Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢.这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制.概括地说,该机制对JVM(Java Virtual Machine)中的内存进行标记,并确定哪些内存需要回收,根据一定

成为Java GC专家(3)—如何优化Java垃圾回收机制

本文作者: ImportNew - 王晓杰 未经许可,禁止转载! 本文是成为Java GC专家系列文章的第三篇.在第一篇<成为JavaGC专家Part I — 深入浅出Java垃圾回收机制>中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生代和老年代,你应该了解的JDK7中的5种GC类型,以及这5种类型对于应用性能的影响. 在第二篇<成为JavaGC专家Part II — 如何监控Java垃圾回收机制>,我解释了JVM实际上是如何执行垃圾回收的,我们如何监控GC,以及

成为Java GC专家(4)—Apache的MaxClients参数详解及其在Tomcat执行FullGC时的影响

本文作者: ImportNew - 王晓杰 未经许可,禁止转载! 这是“成为Java GC专家系列文章”的第四篇. 在第一篇文章 成为JavaGC专家Part I — 深入浅出Java垃圾回收机制 中我们学习了不同GC算法的执行过程,GC如何工作,新生代及老年代的基本概念,在JDK7中你应该了解的5种GC类型以及他们的性能如何. 在第二篇文章 成为JavaGC专家Part II — 如何监控Java垃圾回收机制 中我们学到了JVM到底是如何执行垃圾回收,我们如何监控GC,以及那些工具可以使得监控

Java GC专家系列1:理解Java垃圾回收

了解Java的垃圾回收(GC)原理能给我们带来什么好处?对于软件工程师来说,满足技术好奇心可算是一个,但重要的是理解GC能帮忙我们更好的编写Java应用程序. 上面是我个人的主观的看法,但我相信熟练掌握GC是成为优秀Java程序员的必备技能.如果你对GC执行过程感兴趣,也许你只是有一定的开发应用的经验:如果你仔细考虑过如何选择合适的GC算法,说明你对你所开发的程序有了全面的了解.当然这对一个优秀的程序员来说未必是一个通用的标准,但很少人会反对我关于”理解GC是作为优秀Java程序员的必备技能”的

Java GC 专家系列3:GC调优实践

本篇是”GC专家系列“的第三篇.在第一篇理解Java垃圾回收中我们学习了几种不同的GC算法的处理过程,GC的工作方式,新生代与老年代的区别.所以,你应该已经了解了JDK 7中的5种GC类型,以及每种GC对性能的影响. 在第二篇Java垃圾回收的监控中介绍了在真实场景中JVM是如何运行GC,如何监控GC数据以及有哪些工具可用来方便进行GC监控. 在本篇中,我将基于真实的案例来介绍一些GC调优的最佳选项.写本篇文章时,我假设你已经理解了前两篇的内容.为了深入理解本部分内容,你最好先浏览一下前两篇的内

java gc的工作原理、如何优化GC的性能、如何和GC进行有效的交互

java gc的工作原理.如何优化GC的性能.如何和GC进行有效的交互 一个优秀的Java 程序员必须了解GC 的工作原理.如何优化GC的性能.如何和GC进行有效的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等.只有全面提升内存的管理效 率,才能提高整个应用程序的性能. 本篇文章首先简单介绍GC的工作原理,然后再对GC的几个关键问题进行深入探讨,最后提出一些Java程序设计建议,从GC角度提高Java程序的性能. GC的基本原理     Java 的内存管理实际上就是对象的管

JVM——成为Java GC专家(1)

原文: Understanding Java Garbage Collection JVM--成为Java GC专家(1) 理解Java垃圾回收机制(GarbageCollection,简称GC)是如何工作的有什么好处?做为一名软件工程师,为了满足自己的好奇心去了解他是其中的一个原因,并且理解GC工作原理更能让我们写出性能更好.更健壮的Java应用程序. 这仅仅是我个人观念,但是我相信.精通GC是做为一个优秀的Java工程师的必要条件.如果你对GC工作原理感兴趣.那么就意味着你已经具有了开发一定

成为Java GC专家(5)—Java性能调优原则

这是"成为Java GC专家"系列的第五篇文章.在第一篇深入浅出Java垃圾回收机制中,我们已经学习了不同的GC算法流程.GC的工作原理.新生代(Young Generation)和老年代(Old Generation)的概念.你应该了解了JDK7中5种GC类型以及各种类型对应用程序的影响. 在第二篇如何监控Java的垃圾回收中,阐述了JVM是怎样实际执行垃圾回收的,我们怎样去监控GC以及哪些工具能让这个过程更高效. 第三篇如何如何优化Java垃圾回收机制中展示了一些基于真实案例的最佳