01内存管理-概述
内存管理
- 内存消耗
- 内存管理模型
- 语言架构
- 减少内存使用的实践
1 内存消耗
- 栈大小
每一个线程都有专有的栈空间,栈内存在线程存在期间自由使用。
每一个函数都有其自己的栈帧,所有的变量都会载入到方法的栈帧中,并且消耗一定的内存。
(函数的递归调用自己说白了就是栈内存的溢出)
- 堆大小
每个进程的所有线程共享一个堆,一个设备的可以使用的堆大小远远小于内存的RAM,最多不超过2分之一。
通过类创建的对象都存放在堆当中
创建一个Person 类
@interface Person : NSObject/** */
@property (nonatomic,strong)NSString *name;/** */
@property (nonatomic,assign)NSInteger age;@end
在另外一个类上面
// 这里面创建的Person 就是
- (Person *)createPersonWithName:(NSString *)name age:(NSInteger)age
{// 通过类创建的s所有的数据都存放在堆中Person *p = [Person new];p.age = age;p.name = name;return p;}// 函数中将堆内存中copy到栈中
- (void)totalAge{NSMutableArray * pArr = [NSMutableArray array];// 0 for 循环 创建 10个人for (int i = 0; i < 10; i ++) {NSString *name = [NSString stringWithFormat:@"人物--%d",i];[pArr addObject:[self createPersonWithName:name age:(NSInteger)i]];}// 1 计算着10个人的年纪之和// totalAge 是开辟栈内存的NSInteger totalAge = 0;for (Person *p in pArr) {// MARK 在使用跑p的 age的时候,必须要先复制到栈上面,才能进行加到totalAge 上totalAge += p.age;}}
相关文章:

linux下unzip解压报错“symlink error: File name too long”怎么办?提供解决方案。
点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 分享unzip工具的一个bug。”最近在研究菠菜站,中间用到了Spidermonkey,碰到一些小波折,在这里分享出来,以便大家快速跳坑。从全球最大的男性交友网站GitHub上把Spidermonkey-master…

EF-Linq将查询结果转换为Liststring
List<int> id_list new List<int>() { 1 };//测试数据...List<string> guid_list (from uinfo in db.UserInfowhere id_list.Contains(uinfo.ID)select new{uid uinfo.Guid}).ToList().Select(u > u.uid).ToList<string>(); 转载于:https://www.c…

hdu 2594 kmp
这个题和kmp算法的共同点,也就是可以用kmp解的原因,在于当前缀所在串(kmp中的模式串)字符pj≠后缀所在串(kmp中文本串)字符tj时,应使前缀串(kmp中模式串)尽量往右移动最大位移,而暴力算法则是每次移动位移为…

途游斗地主加密协议分析及破解
点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 分析途游斗地主的加密协议。”作为一个手机棋牌游戏厂商,途游是排得上号的,它的途游斗地主一直很火热,隐约记得,这个厂商一直在搞斗地主的全国竞技赛事,并蹭上了体育总局…

URI、URL以及URN的区别
首先,URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。而URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,…

[转]使用设计模式改善程序结构(二)
使用设计模式改善程序结构(二) 在本系列的 第一篇文章中,描述了如何通过设计模式来指导我们的程序重构过程,并且着重介绍了设计模式意图、动机的重要性。在本文中我们将继续上篇文章进行讨论,这次主要着重于设计模式的…

iOS arm 64 的了解
ARM 简介:ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine。百度介绍 iOS设备中的处理器都是基于ARM架构的。 arm设备真机i386(iphone5,iphone5s以下的模拟器)x86_64(iphone6以上的模拟器…
wireshark和tcpdump抓包TCP乱序和重传怎么办?PCAP TCP排序工具分享
点击上方↑↑↑蓝字[协议分析与还原]关注我们 “ 介绍TCP排序方法,分享一个Windows版的TCP排序工具。” 在分析协议的过程中,不可避免地需要抓包。 无论抓包条件如何优越,无论Windows下使用wireshark还是Linux下使用tcpdump,无论是…

USACO JANUARY——矩形[rects]
Description 给出N个矩形(1≤N≤100)和它的长和宽(不超过1000),写一个程序找出最大的K,使得有K个矩形满足层层包含的关系,即里层的矩形被所有外层的矩形包含.一个矩形P1包含另一个矩形P2,则P2的一边小于P1的一边&#…

ORACLE分页SQL
ORACLE分页SQL 1,使用rownum SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM < 40 ) WHERE RN > 21 2,使用between SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A ) W…

01-基本概念
GCD 1 基本概念 概念: 是 Apple 开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。它是一个在线程池模式的基础上执行的并发任务 优点 多核并行运算不需要手动管理线程生命周期自动利用CPU的内核 两个基本点…
cocos2d游戏jsc文件格式解密,SpideMonkey大冒险
点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 介绍cocos2d游戏中常用的jsc格式文件的解密。” 01 — 在破解游戏应用中,经常会碰到后缀为jsc的文件,这是基于cocos2d开发的游戏的加密代码,本质上是js文件,只是被加密了。 例如之前…

02-dispatch_barrier
1 dispatch_barrier_async 概念 栅栏方法,暂时的将一部操作做成一个同步操作,向一个栅栏一样的分开 dispatch_barrier_async函数的作用是在进程管理中起到一个栅栏的作用,它等待所有位于barrier函数之前的操作执行完毕后执行,并且在barrier函数执行之后…

sqljdbc.jar 和 sqljdbc4.jar
从微软官网下载的Sql server2008的JDBC jar包,解压后里面有两个jar包(sqljdbc.jar 和 sqljdbc4.jar)。到底应该用哪个呢? 地址: http://www.microsoft.com/downloads/details.aspx?FamilyIDa737000d-68d0-4531-b65d-d…

综合性深入的技术文章-20161103
已读文章: SqlServer性能检测和优化工具使用详细 百万级访问网站前期的技术准备 从100PV到1亿级PV网站架构演变 待阅读: 从0到千万级访问量网站架构演变史 memcached全面剖析–5. memcached的应用和兼容程序 PHP解决网站大流量与高并发 NGINX防御CC攻击教…
头条小视频和西瓜视频signature签名算法
点击上方↑↑↑蓝字[协议分析与还原]关注我们“分析今日头条内小视频和西瓜视频分享后浏览器打开所用的signature签名算法。” 上月写的一篇关于使用微信的wxid加好友的文章,竟然无意间碰到了一个微信搜索黑洞,成就了本号有史以来搜索量、阅读量、关注度…

一个winform带你玩转rabbitMQ
源码已放出 https://github.com/dubing/MaoyaRabbit 本章分3部分 一、安装部署初探 二、进阶 三、api相关 安装 部署 初探 先上图 一. 安装部署 下载 rabbitMQ :http://www.rabbitmq.com/download.html 安装rabbitmq需要erlang,下载erlang:ht…

03-dispatch_after
1 dispatch_after 概念 在指定时间之后将任务追加到主队列中。严格来说,这个时间并不是绝对准确的,但想要大致延迟执行任务,dispatch_after函数是很有效的。 NSLog("currentThread---%",[NSThread currentThread]); // 打印当前线…

C#模糊查询绑定datagridview
private CollectionViewSource wgdData new CollectionViewSource(); private DataTable Ds_wgd { get { return this.dgv_wgd.ItemsSource as DataTable; } set { wgdData.Source value; this.dgv_wgd.ItemsSource ((DataTable)wgdData.Source).DefaultView; } } //文本框修…

今日头条反爬措施形同虚设,论多平台协同在安全方面的重要性
点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 玩头条练技能。”大家好,看到标题一定猜到了,我又来玩今日头条了,谁让它是东半球文明的杀时间神器呢。 想当年,头条刚问世,正愁长辈看新闻没合适且方便的工具࿰…

ueditor编辑器和at.js集成
源码: <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <%//禁止jsp解析${} %> <% page isELIgnored"true"%> <%String path request.getContextPath();String basePath reques…

Java缓存学习之五:spring 对缓存的支持
(注意标题,Spring对缓存的支持 这里不单单指Ehcache ) 从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当…

04-dispatch_group
dispatch_group 实现线程同步 比如说,第一步我想先下载三张图片,然后第二步再去主线程刷新imgview 显示图片。 利用dispatch_group 来进行实现 ,简单来讲就四行代码. 就可以让代码按照你想要的顺序进行发生。 使用步骤 创建一个dispatch_g…
fiddler教程:抓包带锁的怎么办?HTTPS抓包介绍。
点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 介绍Fiddler的HTTPS抓包功能。” 这里首先回答下标题中的疑问,fiddler抓包带锁的原因是HTTPS流量抓包功能开启,但解密功能未开启导致,只需要将HTTPS流量解密功能开启就能解决问题。01—作为一款…

如何实现后台向前台传数据
技术交流群:233513714 这两天正在研究如何让后天主动向前台展现数据,只要后台有数据上传的时候就向前台上传(因为公司有个项目,硬件设备会不断的上传数据,服务端将接收到的数据向前台展示)。在网上查了一下,下面将介绍…

05-dispatch_semphore
dispatch_semphore 信号量 dispatch_semaphore信号量为基于计数器的一种多线程同步机制。如果semaphore计数大于等于1,计数-1,返回,程序继续运行。如果计数为0,则等待。dispatch_semaphore_signal(semaphore)为计数1操作,dispatc…

[leetcode]_Integer to Roman
题目:对应之前那道将罗马数字转换整型数字的题目。反过来。 思路:刚开始做的时候,想着用程序进行判断,复杂的要死。网络了别人代码,非常清晰。 代码: 1 public String intToRoman(int num) {2 S…
fiddler使用技巧进阶,如何抓包修改数据?——AutoResponder重定向
“ 介绍Fiddler的AutoResponder重定向功能。” Fiddler功能十分强大,既能抓取报文,也能构造报文,本文继续介绍fiddler的功能,这次的功能与构造报文相关,用来回答标题中的疑问,即修改数据的方法,…

nginx基于IP的虚拟主机
知识点: server的语法: upstream语法: upstream中192.168.100.1不是ip只是个标识,只要和下面的proxy_pass 对应即可。 基于IP的虚拟主机: listen和server_name中多加上端口也没问题 listen可以监听在虚拟ip上面 代码&a…

读《人月神话》所感
《人月神话》 读书心得:因为现在还是学生,且没有什么真正在应用项目的开发经验,所以读《人月神话》这本书,与其说是在学习这位计算机先驱的经验,不如说是在了解一个大型软件系统的开发过程以及在开发过程中将会遇到的…