java的垃圾回收分为

三个区域新生代 老年代 永久代

一个对象实例化时 先去看伊甸园有没有足够的空间

如果有 不进行垃圾回收 ,对象直接在伊甸园存储.

如果伊甸园内存已满,会进行一次minor gc

然后再进行判断伊甸园中的内存是否足够

如果不足 则去看存活区的内存是否足够.

如果内存足够,把伊甸园部分活跃对象保存在存活区,然后把对象保存在伊甸园.

如果内存不足,向老年代发送请求,查询老年代的内存是否足够

如果老年代内存足够,将部分存活区的活跃对象存入老年代.然后把伊甸园的活跃对象放入存活区,对象依旧保存在伊甸园.

如果老年代内存不足,会进行一次full gc,之后老年代会再进行判断 内存是否足够,如果足够 同上.

如果不足 会抛出OutOfMemoryError.

GC虽然可以进行内存空间的释放,但同时频繁的GC一定会影响性能,GC发生的频率越低,你的系统就越高效.

支持原创::https://blog.csdn.net/jidong2622/article/details/78147364

版权声明:本文为博主原创文章,转载请附上博文链接!

java 什么时候进行垃圾回收_java什么时候进行垃圾回收,垃圾回收的执行流程相关推荐

  1. java对象什么时候回收_Java对象的生命周期与垃圾回收以及四种引用

    创建对象的方式用new语句创建对象. 使用反射,调用java.lang.Class或java.lang.reflect.Constructor的newInstance()实例方法. 调用对象的clon ...

  2. java栈的回收_JAVA的堆栈和内存、垃圾回收解说

    1.有关java健壮性特点的真相 很多书上都说java健壮性的特点是因为java使用数组代替了c++的指针:c++最令人头痛的问题就是内存问题,java的健壮性使编程人员不用再考虑内存的问题:这种观点 ...

  3. java 老年代回收_Java垃圾回收之老年代垃圾收集器

    1.Serial Old 收集器(-XX: +UseSerialOldGC, 标记-整理算法) 1.1 单线程收集,进行垃圾收集时,必须暂停所有工作线程 1.2 简单高效,Client模式下默认的老年 ...

  4. java 强制垃圾回收_Java垃圾回收机制

    Java垃圾回收机制 垃圾回收机制用到finalize.当程序创建对象.数组等引用类型实体时,系统都会在堆内存中为之分配一块内存区,对象就保存在这块内存中,当这块内存不再被任何引用变量引用时,这块内存 ...

  5. java加快内存回收_java内存管理之垃圾回收及JVM调优

    GC(garbage Collector 垃圾收集器) 作用:a.内存的动态分配:b.垃圾回收 注:Java所承诺的自动内存管理主要是针对对象内存的回收和对象内存的分配. 一.垃圾标记 程序计数器.J ...

  6. java 2分代复制垃圾回收_Java对象的后事处理——垃圾回收(二)

    1 先谈Finalize() finalize()能做的所有工作,使用try-finally或者其他方式都可以做得更好.更及时,所以笔者建议大家完全可以忘掉Java语言中有这个方法的存在. --< ...

  7. 记录java对象修改过的字段_Java垃圾回收器与内存回收策略

    Java中,内存由虚拟机管理,控制着回收什么,什么时候回收,怎么回收. 在栈中内存的随线程产生和分配,销毁而回收,在堆中,需要制定一系列策略来判断该回收哪些区域,以及何时回收. 可达性分析 主流的做法 ...

  8. java list clear 垃圾回收_java垃圾回收机制

    1.什么是垃圾回收? 程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理就会一直占有内存资源,最终将导数内存溢出,所以内存资源的管是非常重要了. 1.1.C/C++语言的垃圾回收 在C/C+ ...

  9. java list clear 垃圾回收_Java垃圾回收

    1.标记-清除算法 这种收集器首先遍历对象图并标记可到达的对象,然后扫描堆栈以寻找未标记对象并释放它们的内存.这种收集器一般使用单线程工作并停止其他操作. 复制算法 这种收集器将堆栈分为两个域,常称为 ...

  10. java 指定垃g1圾收集_java垃圾回收G1收集器

    G1(Garbage First)收集器是当今收集器技术发展的最前沿成果之一,他是一款面向服务端的垃圾收集器,它的使命是(在比较长期的)未来可以替换掉CMS收集器.它的特点如下: 1.并行与并发:G1 ...

最新文章

  1. python:面向对象初级
  2. WIN7如何替换开机登录画面
  3. Hadoop的mapper输出中key和value之间的分隔符
  4. 12、索引在什么情况下不会被使用?
  5. 不使用GACUtil.exe,如何部署和卸载程序集到GAC中
  6. java中CyclicBarrier的使用
  7. lambda表达式java_Lambda表达式Java教程
  8. linux防火墙 33001端口,Linux操作系统下IPTables配置方法详解
  9. bat 取得服务列表_解读浩泽净水2018业绩:稳定增长背后的服务深化和科技跃进...
  10. Linux 常用的 命令,移动,创建,删除等
  11. access 如何使用dolby_用Access开发《生产管理系统》
  12. HTTPS 加密算法原理详解
  13. linux 下的包管理器 —— apt-get 与 dpkg
  14. QQ连连看 逆向分析外挂制作报告【脱壳ASPPack】【模拟点击】【内联HOOK】
  15. 团队作业3 需求分析与系统设计
  16. 纪念自己初中的住宿生活
  17. cad2018安装教程_AUTO CAD2018安装教程+安装包
  18. python虚拟变量回归_第二周:python实现线性回归(哑变量回归)的高效方法
  19. php7 yar扩展,php7安装yar扩展的方法详解
  20. 友盟统计-事件跟踪的部署

热门文章

  1. ubuntu16.04 python3.5 opencv的安装与卸载(转载)
  2. 用列表+for循环生成乘法口诀表
  3. iOS 在tableview的侧滑事件里执行tableView.selectRow无效的解决办法
  4. Yii2.0 rules常用验证规则
  5. 7.Mybatis关联表查询(这里主要讲的是一对一和一对多的关联查询)
  6. 代理对象我所理解的设计模式(C++实现)——代理模式(Proxy Pattern)
  7. 【异或运算】 - 交换2个数
  8. koa --- [MVC实现之一]自定义路由读取规则
  9. React Native实现NbaApp
  10. 微服务扩展新途径:Messaging