7.JVM GC时的内存管理工作流程和频繁GC的原因
2016-05-31 14:28
330 查看
大部分创建的对象都是在使用后结束,但是有的会存在很久。所以考虑gc的时候会考虑生命周期短,生命周期长,大对象,小对象。
生命周期短或者小对象此时可能就需要频繁的gc,把对象从内存释放掉。如果对象比较大,或者生命周期长就不需要gc,因为这种对象一般在old,如果heap过小此时就会被迫对old区域进行gc,从而导致full gc,此种情况下对性能的影响极大。所以一般会尽可能大的设置较大的heap。
gc的流程:
gc时会扫描young,from,to把不用的对象释放掉,同时把使用中的对象放到to中,此时如果对象大或者from和to的空间满时直接放到old中。young中的对象转移采用复制的方式,优点在于不会产生碎片用空间换取时间。
生命周期短或者小对象此时可能就需要频繁的gc,把对象从内存释放掉。如果对象比较大,或者生命周期长就不需要gc,因为这种对象一般在old,如果heap过小此时就会被迫对old区域进行gc,从而导致full gc,此种情况下对性能的影响极大。所以一般会尽可能大的设置较大的heap。
gc的流程:
gc时会扫描young,from,to把不用的对象释放掉,同时把使用中的对象放到to中,此时如果对象大或者from和to的空间满时直接放到old中。young中的对象转移采用复制的方式,优点在于不会产生碎片用空间换取时间。
相关文章推荐
- 堡垒机-麒麟开源堡垒机代码分析-应用发布帐号同步部分
- js获取select标签选中的值
- 解决日志包Failed to load class"org.slf4j.impl.StaticLoggerBinder"
- php 新特性trait介绍(1)
- Android自定义控件LinearLayout实例讲解
- SpringMVC之ContentNegotiatingViewResolver详解
- NetworkError: 404 Not Found - http://www.companyName.com/Content/fonts/ubuntu-regular-webfont.woff2
- iOS 计算两个日期之间的天数问题
- QML学习文档
- MYSQL使用group by,如何查询出总记录数
- JavaScript知识点总结(六)之JavaScript判断变量数据类型
- 第13周 阅读程序,写出运行结果。 2.(3)交通工具类之纯虚函数
- 如何解决atom无法安装package的问题(gyp WARN install got an error, rolling back install)
- 好文章系列C/C++——图说C++对象模型:对象内存布局详解
- 通用快捷键
- OpenResty学习笔记(一)数据结构与控制流
- Linked List Cycle II
- POJ 1611 The Suspects( 并查集)
- Spark自定义分区(Partitioner)
- Mybatis Generator(代码生成器)