202109-09 新手入门Jvm--Jvm垃圾回收 目录1.Jvm垃圾回收2.作用域3.分类4.垃圾回收算法4.1标记-复制算法4.2标记-清除算法4.3标记-整理算法5.垃圾收集器5.1Serial收集器(-XX:+UseSerialGC-XX:+UseSerialOldGC)5.2ParallelScavenge收集器(-XX:+UseParallelGC(年轻代),-XX:+UseParallelOldGC(老年代))5.3ParNew收集器(-XX:+UseParNewGC)5.4CMS收集器(-XX:+UseConcMarkSweepGC(old))5.5CMS的相关核心参数6.垃圾收集底层算法实现7.总结1.Jvm垃圾回收Java虚... 继续阅读 >
202109-09 JVM执行引擎和垃圾回收要点总结 目录一、执行引擎二、垃圾对象标记1、引用计数法2、可达性分析算法三、垃圾回收机制1、标记清除算法2、标记整理算法3、复制算法4、分代收集算法四、源代码地址一、执行引擎应用程序经过编译,转换为字节码文件,字节码加载到内存空间并不能直接在操作系统上执行,执行引擎作为Java虚拟机核心的组成部分,作用就是将字节码指令解释/编译为对应系统平台上的本地机器指令。解释器:虚拟机启动时会根据预定义对字节码采用逐行解释的方... 继续阅读 >
202109-06 深入理解JVM垃圾回收算法 目录一、垃圾标记阶段1.1、引用计数法(java没有采用)1.2、可达性分析算法二、对象的finalization机制2.1、对象是否"死亡"三、使用(MAT与JProfiler)工具分析GCRoots3.1、获取dump文件3.2、GCRoots分析四、垃圾清除阶段4.1、标记-清除算法4.2、复制算法4.3、标记-压缩(整理,Mark-Compact)算法4.4、以上三种垃圾回收算法对比4.5、分代收集算法4.6、增量收集算法4.7、分区算法G1回收器一、垃圾标记阶段对象存活判断:在堆里存放... 继续阅读 >
202108-08 分析PHP的垃圾回收机制 如果用过C语言,那么申请内存的方式是malloc或者是calloc,然后你用完这个内存后,一定不要忘了用free函数去释放掉,这就是传说中手动垃圾回收,一般都是扫地神僧用这种方式。很多高层次语言中,你这辈子都是接触不到内存管理的,比如世界上最好的语言php,这种语言替你管理了内存,你就安安心心写烂代码即可。写php的,你说你关心内存,我是不怎么相信的,一定是你在装逼。当然了,如果你用的swoole或者wm或者自己发明的常驻内存... 继续阅读 >
202107-22 详解php内存管理机制与垃圾回收机制 目录一、内存管理机制二、垃圾回收机制一、内存管理机制先看一段代码:<?php//内存管理机制var_dump(memory_get_usage());//获取内存方法,加上true返回实际内存,不加则返回表现内存$a="laruence";var_dump(memory_get_usage());unset($a);var_dump(memory_get_usage());//输出(在我的个人电脑上,可能会因为系统,PHP版本,载入的扩展不同而不同)://int240552//int240720//int240552定义变量之后,内存增加,清除变量之后... 继续阅读 >
202106-13 PHP中垃圾回收相关函数的使用 之前我们已经学习过PHP中的引用计数以及垃圾回收机制的概念。这些内容非常偏理论,也是非常常见的面试内容。而今天介绍的则是具体的关于垃圾回收的一些功能函数。关于之前的两篇介绍文章,大家可以到文章底部查看。再谈循环引用以及强制清理循环引用我们为什么要强调“循环引用”呢?其实,在默认情况下,我们直接unset()掉一个没有被其他变量引用的变量时,就会让这个变量的引用计数变为0。这时,PHP默认的垃圾回收机制就... 继续阅读 >
202103-19 浅谈JVM垃圾回收之哪些对象可以被回收 1.背景Java语言相比于C和C++,一个最大的特点就是不需要程序员自己手动去申请和释放内存,这一切交由JVM来完成。在Java中,运行时的数据区域分为程序计数器、Java虚拟机栈、本地方法栈、方法区和堆。其中,程序计数器、虚拟机栈和本地方法栈是线程私有的,线程销毁后自动释放。垃圾回收的行为发生在堆和方法区,主要是堆,而堆中存储的主要是对象。那么自然而然地就会有这么几个问题,哪些对象可以被回收?通过什么方式回收?本文... 继续阅读 >
202103-09 详解Python垃圾回收机制和常量池的验证 Python的引入人类认识世界是从认识世界中的一个又一个实物开始,然后再对其用语言加以描述。例如当中国人看到苹果时,便会用中文“苹果”加以描述,而用英语的一些国家则会用“apple”加以描述。以上说到的中文和英文都是人类认识并描述世界的一个工具,而在计算机的世界中,为了让计算机去认知世界,从而帮助人类完成更多的任务。在计算机领域中也发展了语言这个工具,从早期的机器语言到汇编语言再到现在使用范围较广的高级语言... 继续阅读 >
202102-21 c# 垃圾回收(GC)优化 GC,GarbageCollect,中文意思就是垃圾回收,指的是系统中的内存的分配和回收管理。其对系统性能的影响是不可小觑的。今天就来说一下关于GC优化的东西,这里并不着重说概念和理论,主要说一些实用的东西。关于概念和理论这里只做简单说明,具体的大家可以看微软官方文档。一、什么是GC ... 继续阅读 >
202011-22 Python析构函数__del__定义原理解析 析构函数__del__定义:在类里定义,如果不定义,Python会在后台提供默认析构函数。析构函数__del__调用:A、使用del显式的调用析构函数删除对象时:del对象名;classFoo:def__init__(self,x):self.x=xdef__del__(self):#在对象资源被释放时触发print('-----del------')print(self)f=Foo(1... 继续阅读 >
202011-17 浅析JVM的垃圾回收器 JVM的GC经过多年的发展,大家对MinorGC、majorGC的理解并不完全一致,所以我不打算在本文中使用这个概念。我把GC大概分为一下4类:YoungGC:只是负责回收年轻代对象的GC;OldGC:只是负责回收老年代对象的GC;FullGC:回收整个堆的对象,包括年轻代、老年代、持久带;MixedGC:回收年轻代和部分老年代的GC(G1);因为笔者目前使用G1还是比较少的,所以本文不打算将G1。垃圾回收器算法目前主流垃圾回收器都采用的是可... 继续阅读 >
202010-10 谈谈python垃圾回收机制 什么是垃圾回收机制?首先,咱先来解释名词,垃圾回收是不是就是将没用的,废弃的东西回收起来。在坐的各位都没有女朋友对吧,那难以想象你们的房间会是一个什么样子,可能会有很多垃圾,很凌乱,自己也不收拾。那当你有了女朋友了就不一样了,她会帮你收拾房间,把没用的垃圾都给你扔掉。那在我们Python当中的垃圾回收承担的就是女朋友的角色,你们想象一下,你现在有一个轻度强迫症的女朋友一刻不停的跟在你的背后打扫卫生,你一... 继续阅读 >
202010-10 python中的垃圾回收(GC)机制 一、引用计数Python垃圾回收以引用计数为主,分代回收为辅。引用计数法的原理是每个对象维护一个ob_refcnt,用来记录对象被引用的次数,也就是用来追踪有多少个引用指向了对象,当发生以下四种情况的时候,对象的引用计数+1:对象被创建,比如:a=14对象被引用,比如:b=a对象被作为参数,传给函数,比如:func(a)对象作为容器中的一个元素,比如:List={a,”a”,”b”,2}与上述情况相对应,当发生以下四种... 继续阅读 >
202010-10 谈谈JavaScript中的垃圾回收机制 JavaScript具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中使用的内存。在编写JavaScript程序时,开发人员不用再关心内存使用问题,所需内存的分配以及无用内存的回收完全实现了自动管理。这种垃圾收集机制的原理其实很简单:找出那些不再继续使用的变量,然后释放其占用的内存。为此,垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间),周期性地执行这一操作。具体到浏览器中... 继续阅读 >
202010-10 浅析JVM垃圾回收的过程 JVM垃圾回收的算法很多,但是不管是哪种算法,在进行GC时大致的流程都是差不多的,主要有以下3个过程:1.枚举根节点这个过程主要是找到所有的GCRoots对象,这些对象一般发生在JVM虚拟机栈栈帧、常量池中的静态对象、方法区中静态类属性引用、本地方法栈中引用的对象。这个过程会发生STW,所有的线程均运行到安全区域(SafeRegion)才开始执行。通常有两种算法:引用计数法:每个对象中添加一个引用计数器,每当有一个地方引用... 继续阅读 >
202010-08 详细分析Python垃圾回收机制 引入为什么要有垃圾回收机制Python中的垃圾回收机制简称(GC),我们在程序的运行中会产生大量的变量用于保存数据,而有时候有些变量已经没有用了就需要被清理释放掉该变量所占据的内存空间。在一些较为低级的语言中(比如:C语言,汇编语言)对于内存空间的释放是需要编程人员来手动进行的,这种与底层硬件直接打交道的操作是十分的危险与繁琐的,而基于C语言开发而来的Python为了解决掉这种顾虑则自带了一种垃圾回收机制,从... 继续阅读 >