python垃圾回收方法 (1)垃圾回收 -- 引用计数减少,python内存会主动做垃圾回收 -- 由于引用计数不断创建和删除, 就采用标记-清除 设两个对象为A、B,我们从A出发,因为它有一个对B的引用,则将B的引用计数减1;然后顺着引用达到B,因为B有一个对A的引用,同样将A的引用减1, 顺着 ...
分类:
编程语言 时间:
2019-11-21 13:37:37
阅读次数:
90
概述RocketMQ存储中主要用到以下知识点:mmap 文件映射内存池异步刷盘consumeQueue同时本节将介绍各个重要的类,本篇文章将介绍 mmap 文件映射的相关方法和内存池相关知识点,刷盘和 consumeQueue 相关知识点在下篇介绍。MappedFilemappedFile 对应着底... ...
分类:
其他好文 时间:
2019-11-03 14:36:20
阅读次数:
92
PoolChunk用来分配大于或等于一个page的内存,如果需要小于一个page的内存,需要先从PoolChunk中分配一个page,然后再把一个page切割成多个子页-subpage,最后把内存以subpage为单位分配出去。PoolSubpage就是用来管理subpage的。 一个page会被分 ...
分类:
Web程序 时间:
2019-10-29 16:58:08
阅读次数:
89
Mysql 三大特性详解 Mysql Innodb后台线程 工作方式 首先Mysql进程模型是单进程多线程的。所以我们通过ps查找mysqld进程是只有一个。 体系架构 InnoDB存储引擎的架构如下图所以,是由多个内存块组成的内存池,同时又多个后台线程进行工作,文件是存储磁盘上的数据。 后台线程 ...
分类:
数据库 时间:
2019-10-24 13:14:29
阅读次数:
79
处理链接 1:首先内核经过请求的三次握手成功后通过操作系统的负载均衡算法选择一个监听的worker进程 2:worker进程通过epoll事件机制epoll-wait方法返回一个链接句柄 3:事件模块epoll分配链接内存池 connection_pool_size:512字节 4:事件模块回调Ht ...
分类:
Web程序 时间:
2019-10-24 09:31:45
阅读次数:
117
PooledByteBuf的初始化过程分为两个步骤:创建实例;初始化内存。这两个步骤的代码如下: 507383170 创建实例时调用的构造方法只是为maxCapacity和recyclerHandler属性赋值,构造方法是protected,不打算暴露到外面。派生类都提供了newInstance方法 ...
分类:
Web程序 时间:
2019-10-20 01:05:41
阅读次数:
147
上节在学习第二级配置器时了解了第二级配置器通过内存池与自由链表来处理小区块内存的申请。但只是对其概念进行点到为止的认识,并未深入探究。这节就来学习一下自由链表的填充和内存池的内存分配机制。 refill()函数——重新填充自由链表 前情提要,从上节第二级配置器的源码中可以看到,在空间配置函数allo ...
分类:
其他好文 时间:
2019-10-13 17:08:52
阅读次数:
98
概述文章主要介绍的是PoolArena,PoolChunk,PoolSubpage 三个类的源码PoolArenaPoolArena 是netty 的内存池实现类,通过预先申请一块大的空间,然后对空间进行分配和回收,这样就不用频繁进行系统调用,提高性能。PoolArena 由多个 chunk 组成,... ...
分类:
Web程序 时间:
2019-10-08 14:10:56
阅读次数:
117
1、InnoDB存储引擎支持事务、行锁以及外键,主要面向在线事务处理(OLTP)的应用,是MySQL5.5.8之后默认的存储引擎。 2、InnoDB的体系架构主要包括两部分: (1)后台线程:负责刷新内存池中的数据,以及将已修改的数据文件刷新到磁盘文件。 包括Master Thread、IO Thr ...
分类:
数据库 时间:
2019-10-02 19:10:39
阅读次数:
129
// threadpool.c #include "threadpool.h" #include <stdio.h> pthread_mutex_t ThreadPool::mutex = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t ThreadPool::c... ...
分类:
编程语言 时间:
2019-09-30 18:29:18
阅读次数:
116