`
no7beckham
  • 浏览: 94797 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

垃圾回收机制的总结

    博客分类:
  • JAVA
阅读更多

HOTSPOT JVM内存模型图



Java Heap 分为三个主要的域:新域(Young/New)、旧域(Old)以及永久域(Permanent)。JVM生成的所有新对象放在新域中。一旦对象经历了一定数量的垃圾收集循环后,便获得使用期并进入旧域。在永久 域中JVM则存储class和method对象。就配置而言,永久域是一个独立域并且不认为是堆的一部分。

用-Xms和-Xmx 控制整个堆(Young+Old)的原始大小或最大值。
  
下面的命令是把初始大小设置为128M,最大值设置为256M:
  
java –Xms128m –Xmx256m

用-XX:NewRatio设置新域(Young)在堆中所占的比例。

下面的命令把整个堆设置成128m,新域比率设置成3,即新域与旧域比例为1:3,新域为堆的1/4或32M:
  
java –Xms128m –Xmx128m –XX:NewRatio =3

或者直接设置新域(Young)的大小,
下面的命令把新域的大小设置成64m:
  
java –Xms256m –Xmx256m –Xmn64m

此时旧域的大小为256m-64m=192m

永久域默认大小为4m。运行程序时,jvm会调整永久域的大小以满足需要。每次调整时,jvm会对堆进行一次完全的垃圾收集。
  
使 用-XX:MaxPerSize标志来增加永久域搭大小。在WebLogic Server应用程序加载较多类时,经常需要增加永久域的最大值。当jvm加载类时,永久域中的对象急剧增加,从而使jvm不断调整永久域大小。为了避免 调整,可使用-XX:PerSize标志设置初始值。
  
下面命令把永久域初始值设置成32m,最大值设置成64m。
  
java -Xms512m -Xmx512m -Xmn128m -XX:PermSize=32m -XX:MaxPermSize=64m

新域分为三部分,第一部分为Eden,用于生成新的对象,剩下两部分为两个Survivor Spaces(from,to), 用来存放每次垃圾回收后存活下来的对象。新域中使用复制收集器,当Eden 充满时,收集器停止应用程序,把所有活动对象复制到当前的from Survivor Space, 当from Survivor Space充满时,收集器则把活动对象复制到当前的to Survivor Space。From和to Space可以互换角色。活动的对象将在Survivor Space不断复制,直到它们被转入旧域。

用-XX:SurvivorRatio可以设置Survivor与Eden空间的比值
以下命令把新域设置成64m,Eden占32m,每个救助域各占16m
java -Xms256m -Xmx256m -Xmn64m -XX:SurvivorRation =2

当两个Survivor Spaces(from,to)都满了,剩下的活动对象也会被转入旧域。如果想让活动对象不经过Survivor Spaces,直接进入旧域,可以把-XX:MaxTenuringThreshold设置为0,并把-XX:SurvivorRatio设置成一个大值(比如10000或者更大)以最大化Eden空间。

本文参考并转载了以下文章的内容
http://info.52z.com/html/28809.html
http://gzcj.iteye.com/blog/289062
http://java.chinaitlab.com/Jvm/36987.html

 

分享到:
评论

相关推荐

    Java垃圾回收机制总结

    Java垃圾回收机制总结

    jvm垃圾回收机制总结

    jvm垃圾回收机制总结

    Java垃圾回收机制

    Java垃圾回收机制的详细介绍,调理比较清晰,个人进行的总结。

    c#的GC垃圾回收机制详细讲解文档

    今天来谈谈C#的GC,也就是垃圾回收机制,非常的受教,总结如下 首先:谈谈托管,什么叫托管,我的理解就是托付C#运行环境帮我们去管理,在这个运行环境中可以帮助我们开辟内存和释放内存,开辟内存一般用new,内存是...

    JVM垃圾回收机制.xmind

    自己学习总结JVM垃圾回收机制的结构图,一起分享!!!

    java 垃圾回收机制详细介绍

    垃圾收集器是Java语言区别于其他程序设计语言的一大特色。它把程序员从手工回收内存空间的繁重工作中解脱了...鉴于此,笔者总结了这个垃圾收集器的专题,希望对广大Java技术的爱好者和准备认证考试的考生们有所帮助。

    【JavaScript源代码】js闭包和垃圾回收机制示例详解.docx

    垃圾回收机制 总结  前言  正文  1.闭包  1.1闭包是什么?  1.2闭包的特性 1.3理解闭包  1.4闭包的主要实现形式  1.5闭包的优缺点  1.6闭包的使用  2.垃圾回收机制 1.闭包  1.1闭包是什么?  1.2闭包...

    【JavaScript源代码】详解JavaScript的垃圾回收机制.docx

    详解JavaScript的垃圾回收机制  目录 为什么需要垃圾回收(GC)什么是垃圾回收垃圾产生垃圾回收策略引用计数标记循环引用引发的问题解决方法引用计数算法的优缺点标记清除算法核心思想标记清除算法优缺点标记整理...

    【JavaScript源代码】一文带你了解JavaScript垃圾回收机制.docx

    一文带你了解JavaScript垃圾回收机制  目录 1. 概述 2. 内存管理 3. 垃圾回收 4. GC算法介绍 5. 引用计数算法 1. 引用计数优缺点 6. 标记清除算法 1. 标记清除算法优缺点 7. 标记整理算法 8. 执行时机 9. V8引擎 1...

    java垃圾回收以及jvm参数调优概述

    Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象...本文主要对java垃圾回收机制以及jvm参数等方面做个综述,也算是自己做开发这几年对这方面的一个总结。

    掌握PHP垃圾回收机制详解

    php的垃圾回收机制可以简单总结为 引用计数 写时复制 COW机制, 本文主要和大家分享掌握php垃圾回收机制的知识,希望能帮助到大家。 引用计数基本知识 官网的解答如下 每个php变量存在一个叫”zval”的变量容器中一...

    Java垃圾回收器的方法和原理总结

    本篇文章主要介绍了Java垃圾回收器的方法和原理总结,Java垃圾回收器是Java虚拟机的重要模块,具有一定的参考价值,有兴趣的可以了解一下。

    Java内存管理机制

    1、JAVA 内存管理总结 2、Java的内存管理实例 3、垃圾回收机制:

    java重要知识点总结

    2.java的垃圾回收机制: java的垃圾回收将在程序运行过程中自动进行,无需程序员负责回收无用内存。 3.java环境变量配置: 在我的电脑>属性>高级>环境变量里的 path 中加入C:\Program Files\Java\jdk1.6.0\bin的路径...

    JVM_启动参数_总结

    JVM_启动参数_总结。详细介绍JVM的详细启动参数及JVM垃圾回收机制。

    JVM面试复习.pdf

    JVM基础知识点讲解总结 包括JVM的内存结构、Java线程间通信、JMM底层原理、垃圾回收机制与双亲委派机制等等

    论文研究-移动应用程序内存泄露机制分析与检测方案设计.pdf

    Android开发已经成为移动开发热门领域,Android应用程序中内存使用的问题却经常容易被忽视,部分开发者对Java垃圾回收机制认识模糊,使得内存泄漏成为Android应用开发中十分隐秘但又确实存在的应用安全问题,对内存...

    java深度历险

    JAVA垃圾回收机制与引用类型 22 JAVA垃圾回收机制 22 JAVA引用类型 23 参考资料 27 JAVA泛型 28 类型擦除 28 实例分析 29 通配符与上下界 30 类型系统 31 开发自己的泛型类 32 最佳实践 32 参考资料 33 目录 3 JAVA...

    Notes:This is a learning note | Java基础,JVM,源码,大数据,面经

    Notes 我的笔记: 知识不总结,就会被大脑当...垃圾回收机制的监控 优化垃圾回收机制 Apache的MaxClients参数详解及其在Tomcat执行FullGC时的影响 JavaEE 浅析Web容器 计算机网络 UDP&TCP DB MySQL索引背后的数据结构

    C#中fixed关键字的作用总结

    1、垃圾回收机制,维护引用信息不维护指针信息 2、引用类型的实例化对象在生存期内由垃圾回收机制处理,可能移动内存 3、当一个类的实例化对象中含有值类型时,定义指向这些值类型的指针编译报error,因为这些内嵌在...

Global site tag (gtag.js) - Google Analytics