GC策略_weixin_33985507的博客-程序员宅基地

技术标签: python  

JVM里的GC(Garbage Collection)的算法有很多种,如标记清除收集器,压缩收集器,分代收集器等等

现在比较常用的是分代收集(generational collection,也是SUN VM使用的,J2SE1.2之后引入),即将内存分为几个区域,将不同生命周期的对象放在不同区域里:young generation,tenured generation和permanet generation。绝大部分的objec被分配在young generation(生命周期短),并且大部分的object在这里die。当young generation满了之后,将引发minor collection(YGC)。在minor collection后存活的object会被移动到tenured generation(生命周期比较长)。最后,tenured generation满之后触发major collection。major collection(Full gc)会触发整个heap的回收,包括回收young generation。permanet generation区域比较稳定,主要存放classloader信息。

young generation有eden、2个survivor 区域组成。其中一个survivor区域一直是空的,是eden区域和另一个survivor区域在下一次copy collection后活着的objecy的目的地。object在survivo区域被复制直到转移到tenured区。

我们要尽量减少 Full gc 的次数(tenured generation 一般比较大,收集的时间较长,频繁的Full gc会导致应用的性能收到严重的影响)。

###一、堆内存GC

JVM(采用分代回收的策略),用较高的频率对年轻的对象(young generation)进行YGC,而对老对象(tenured generation)较少(tenured generation 满了后才进行)进行Full GC。这样就不需要每次GC都将内存中所有对象都检查一遍。

###二、非堆内存不GC

GC不会在主程序运行期对PermGen Space进行清理,所以如果你的应用中有很多CLASS(特别是动态生成类,当然permgen space存放的内容不仅限于类)的话,就很可能出现PermGen Space错误。

转载于:https://my.oschina.net/u/1985317/blog/903224

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33985507/article/details/92164232

智能推荐

111.Android简单的监听媒体库,查询媒体库图片、音频、文档文件_小妞得意的博客-程序员宅基地_android 媒体库路径

1.媒体库监听:/** * 媒体库文件监听 * * @author CJF */public class MediaStoreChangeObserver extends ContentObserver { private static final String TAG = "MediaStoreChangeObserver"; private volatile static MediaStoreChangeObserver mediaStoreChangeObserve

AFNetworking网络请求时注意的cookies缓存问题_瞿大大的博客-程序员宅基地

cookies是为了保持用户信息去维持一个对话,有时候退出登录的时候就会掉到这个大坑里面去,由于cookies没有清除,就会出现数据对应的权限出现问题,请求到的数据不是对应的账号应该有的数据权限,这个时候就要在退出登录或者登陆的时候将以前的那些cookies给清除掉,才不会出现这个数据错乱的问题,这个时候用一段代码就可以是现在这个问题了下面我来给你们来一段通用的代码啊NSURL *url =

strstr函数_Electronic_Geek的博客-程序员宅基地

strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,则返回NULL。包含文件:string.h函数名: strstr函数原型:1extern char *strstr(char *str1, const char *str

【编译原理】解释程序与编译程序的主要区别_一拳Marx的博客-程序员宅基地_程序与编译程序的区别

【编译原理】解释程序与编译程序的主要区别解释程序与编译程序的主要区别是:编译程序将源程序翻译成目标程序后再执行该目标程序;而解释程序则逐条读出源程序中的语句并解释执行,即在解释程序的执行过程中并不产生目标程序。典型的解释型高级语言是BASIC语言。 这里有必要说一下Java。 Java是一种编译型-解释型语言,同时具备编译特性和解释特性(其实,确切的说Java就是解释型语言,其所谓的编译过程只是将 .java 文件编译成与平台无关的字节码 .class 文件,并不是像C一样编译成可执行的机器语言。

小而美的博客开发笔记——前端页面设计(后端)_AO_TAO的博客-程序员宅基地

前端设计有很大的工程量,我们采用在线设计通过拖拽的方式将页面设计出来。然后用semantic-ui组件填充代码。1.后台管理博客页面2.新增博客页面3.管理分类页面4.新增类型页面5.标签列表页面6.标签新增页面...

android 自定义dialog,窗口动画_life02的博客-程序员宅基地

【android】动画效果研究(Dialog)【5】参考文献:http://blog.csdn.net/lhs286266503/article/details/6996981http://archive.cnblogs.com/a/2176653/Dialog不同于view/PopupWindow,如果需要更改Dialog显示的位置,一般是更新窗口显示,直接上代码吧。与Popup

随便推点

BZOJ 1485 [HNOI2009]有趣的数列 - 卡特兰数_x_1023的博客-程序员宅基地

关于卡特兰数的介绍 ->http://blog.csdn.net/hackbuteer1/article/details/7450250 (其中第一道题就是这道题的翻版)首先将2n个数排列为序列A,从前向后选出n个作为奇数项,剩下的作为偶数项,而且选定的数组成的有趣的数列只能有一种(选出的奇数项数字和偶数项数字要升序插入数列,排列只有一种)。要保证奇数项小于偶数项,那么对于每一位A中的数,其前选

sublime test3怎么配置、运行python_浪子私房菜的博客-程序员宅基地

win10 系统下关于sublime text 3 怎么运行python菜鸟本人,最近发现了一个编译神器,sublime text3 ,安装过程就不详述了,那么怎么配置和运行python小菜尝试了网上以及大神们的方法,在大神们指导下完成,那么小菜写一下自己的心路历程首先要配置python的环境下载(在官网上找一个自己喜欢的版本)下载链接选择Add Python 3.7 to PATH 和 Install Now完成检测是否安装成功(如图所示)打开sublime text3–tools

hadoop2.2.0集群搭建_撸依天的博客-程序员宅基地

hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA、YARN等。注意:apache提供的hadoop-2.2.0的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,所以如果在64位的操作上安装hadoop-2.2.0就需要重新在64操作系统上重新编译(建议第一次安装用32位的系统,我将编译好的64位的也上传到群共享里了,如果有兴趣的

翻译经典之《Cisco Lan Switching》第六章 理解生成树(九):两种BPDU类型_shallnet的博客-程序员宅基地

【版权声明:原创翻译文章,翻译水平有限,错误在所难免,翻译作者对文章中存在的错误或遗漏所造成后果不承担任何责任,请谨慎转载。转载请保留本声明及出处:blog.csdn.net/shallnet ,下载该书英文版】在此之前,本章都认为所有BPDU为同一种BPDU,事实上,BPDU有两种类型:配置BPDU拓扑改变通知(TCN)BPDU配置BPDU是由根网桥发出,通过

反转部分链表python_Python实现反转链表——图解_weixin_39622710的博客-程序员宅基地

之前在遇到这个题目的时候,一直没想明白递归是怎么做的。网络上介绍解法的文章很多,可是大多数不够详细。希望借着这篇文章分享我本人的思路,如有错误,欢迎指正。题目来源于LeetCode 206,题目要求反转一个单链表。先给上解题代码,再来详细分析是怎么做到翻转的。# Definition for singly-linked list.# class ListNode:# def __init_...

项目中错误总结1:springboot使用restTemplate报错java.net.HttpRetryException: cannot retry due to server authentic_一路风情的博客-程序员宅基地

我们的应用程序包含两个部分:服务器-提供REST服务客户端-通过Spring restTemplate使用它们除了HTTP状态外,我们的服务器还返回带有JSON的HTTP正文,其中详细描述了错误。因此,我在restTemplate中添加了自定义错误处理程序,以将某些错误编码为非错误-它有助于很好地解析HTTP正文。为获取异常,不抛异常@Beanpublic RestTemplate restTemplate(ClientHttpRequestFactory factory) throws