G2.9 std_alloc
1.G2.9 std::alloc运行模式
(1) 每个链表都是20*2,20个切割好,其余的20个作为战备池
(2)分配的范围在8K~128K。
2.embedded pointers
(1)当客户段使用小区快,获得的既是char*(指向某个union obj)。此时虽然客户端没有诸如LString或ZString之类的信息可得知区块大小,但由于区块是给object所用,相当于object大小,object ctor自然不会过分。
(2)union obj {
union obj* free_list_link;
};
改用struct可
3.std_alloc运行一瞥
(1)初始时的16个链表
(2)申请32bytes
申请32bytes,由于pool为空,故所取并成功向pool灌注32*20*2 + RoundUp(0>>4)=1280,从中切出1个区块返回客户,19个区块给list#3,余640备用,
>累计申请量:1280
>pool大小:640
(3)申请64bytes(连线表示链表连在一起)
(4)申请96bytes
战备池pool为空,累计申请量为1280/16=80,调整为8的倍数
累计申请量:1280+96*20*2+80 = 5200
战备池pool大小:96*20*2+80-96*20 = 2000
(5)申请88bytes(连线表示链表连在一起)
挂在88/8-1在10个链表,战备池有剩余,切割88*20,剩余战备池pool大小:2000-88*20=240
(6)连续三次申请88bytes
(7)申请8bytes
战备池pool大小:240-8*20=80
(8)申请104bytes
战备池pool大小为80不足104bytes,80/8-1=9,将战备池pool挂到第9个链表
新申请104*20*2+[累计申请总量5200/16=325调整8的倍数328]
战备池pool大小104*20*2+328-104*2=2408
(9)申请112bytes
累计申请量:9688
pool大小:2408-112*20=168
(10)申请48bytes
累计申请量:9688
战备池pool大小:168-48*3=24
(11)现在假设内存10000bytes,继续申请72bytes
挂在9处的为80bytes,然后剪断,挂在第8个链表,战备池剩余80-72=8
(12)继续申请72bytes
战备池pool大小不足72bytes,然后将战备池8bytes挂在第0个链表;
向右边继续查找,在第10个链表,截取72bytes,战备池剩余88-72=16
(13) 申请120bytes
战备池pool大小16不足120,然后将16bytes/8-1=1挂在第1个链表
向右查找>120,没有申请失败
(14)检讨
G2.9 std_alloc相关推荐
- G2.9 std_alloc源码剖析
1.alloc类简介 template <bool threads, int inst> class __default_alloc_template { private: // Real ...
- antv g2字体阴影_antv g2的理解总结
G2 G2本身是一门图形语法,G2和传统的图表系统(HighCharts,ACharts等)不同,G2是一个基于统计分析的语义化数据可视化系统.它真正做到了让数据驱动图形,让你在使用它时候不用关心绘图 ...
- 用python画漂亮图片-python结合G2绘制精美图形
$.getJSON('top10.json', function (data) { var Frame = G2.Frame; var frame = new Frame(data); var cha ...
- G2. 唐纳德与子串 (Hard)kmp
G2. 唐纳德与子串 (Hard) Time limit per test: 2.5 seconds Memory limit: 512 megabytes 子串的定义是在一个字符串中连续出现的一段字 ...
- StreamBox Ripper 将rm转mp3时候出现g2支持的问题
利用StreamBox Ripper(很多网站有下,很小的绿色软件,使用方便)可以将rm格式的 文件转换成mp3格式的文件但是一般大家安装的是realpalyer 10,StreamBox Rippe ...
- 如何修复修复损坏的TAU G2的.u2文件
今天收到一封来信: "我的高级链路做了一部分了,而且所做的部分在做完之后已经及时保存.但是写完文档后关闭TAU G2的时候出现死机,我就强行关闭了TAU G2.以前也经常发生类似的情况,可是 ...
- Vue+G2:Please specify the container for the chart! + Cannot read property ‘appendChild‘ of null
研究了一下午,终于搞懂了是为啥. 先看一下代码,两个tab标签页,其中一个放chart的挂在节点,但是初始化的时候一直报两个错. <a-tabs default-active-key=" ...
- 高亮屏幕一条条线_惠普Z24N G2显示器评测 设计师都想要的好屏幕
[PConline 评测]一块设计师想要的好屏幕到底是什么样子呢?在我们以往评测的显示器当中,几乎都是清一色的电竞屏,传统的讲究简约和色彩表现的设计师专用屏幕却是很少评测到.可能是这几年来电竞的浪潮太 ...
- G2 2.0 更灵活、更强大、更完备的可视化引擎!
概述 G2作为一款技术产品,自诞生以来,服务于广大的Web工程师群体和一部分数据分析师.一直来,G2 因其易用的语法和扎实的可视化理论基础,广受使用者好评.G2 1.x 的可视化能力已经非常强大,使用 ...
最新文章
- 不存在从void转换到sqlist的适当构造函数_拷贝构造函数与赋值构造函数
- Linux预备知识(一):进程隔离
- 2021年石家庄七中高考成绩查询入口,石家庄市教育考试院官网2020中考查分:成绩查询入口...
- java程序动态加载jar包,并调用其中的方法
- JQuery模拟二------添加extend函数和简单选择器
- Google 出售 Performics
- Netty4 学习笔记之三:粘包和拆包
- AI制作ICON流程
- C语言共用体和枚举的使用
- 软件测试人员,究竟怎么霸气过七夕?!大神攻略请笑纳!
- ThreadPoolExecutor线程池 —————— 开开开山怪
- 全网最精减、安装最简单、无头疼配置的Katago教程,大小才168M,职业水平,散仙订制版
- 达达,不能只做京东的达达
- [WinError 10060]错误
- 《深入浅出4G网络 LTE_EPC》阅读笔记一
- 期货开户寻找交易确定性
- OpenStack Victoria版——6.2计算节点-Nova计算服务组件
- 【收藏】经典shell十三问
- 【IAP】IAP在线升级流程
- 乐视网:贾跃亭解质押150万股股票系法院司法执行操作
热门文章
- ABP官方文档翻译 4.6 审计日志
- TypeError: 'str' object is not callable (Python)
- Window2003 IIS+MySQL+PHP+Zend环境配置
- (八)2005年我的第一次软件行业创业,烧掉30万、2年时间打水漂的惨痛教训
- 如何插入一条记录获取插入后的自动增长ID列的方法.
- 数据在数组中存储的顺序:小端 OR 大端模式 详解
- Lua 中的 function、closure、upvalue
- 数据库是.frm,.myd,myi备份如何导入mysql (转)
- Flex 4中组件背景设置(填充方式)group为例子
- 2014.7.7模拟赛【无线通讯网】