这里先说两个概念:1、堆(heap)2、栈(stack)堆 是堆内存的简称。栈 是栈内存的简称。说到堆栈,我们讲的就是内存的使用和分配了,没有寄存器的事,也没有硬盘的事。各种语言在处理堆栈的原理上都大同小异。堆是动态分配内存,内存大小不一,也不会自动释放。栈是自动分配相对固定大小的内存空间,并由系统 ...
分类:
Web程序 时间:
2020-02-06 19:51:16
阅读次数:
95
SDWebImageNSCache类似可变字典,线程安全,使用可变字典自定义实现缓存时需要考虑加锁和释放锁在内存不足时NSCache会自动释放存储的对象,不需要手动干预NSCache的key不会被复制,所以key不需要实现NSCopying协议第三方框架网络1.PPNetworkHelper对AFN... ...
分类:
移动开发 时间:
2020-02-06 12:46:52
阅读次数:
97
1、资源释放 java7可以在try(创建资源对象,方法体结束之后自动释放) ...
分类:
其他好文 时间:
2020-01-31 14:10:19
阅读次数:
59
1. 内存生命周期 分配小内存空间, 得到它的使用权 存储数据, 可以反复进行操作 释放小内存空间 2. 释放内存 局部变量: 函数执行完自动释放 对象: 成为垃圾对象 == 垃圾回收器回收 ...
分类:
Web程序 时间:
2020-01-27 10:58:46
阅读次数:
85
首先几个基本概念(网上的各种说法都很乱;个人理解整理了一下 内存分类方法很多,动态、静态; 五区; 三段; 内存的区: 1.动态存储区分为 栈区、堆区 也统称为堆栈段1.1栈区(stack) 编译器自动分配释放,存放函数的参数值,局部变量的值等。函数结束自动释放1.2堆区(heap) 一般由程序员分 ...
分类:
编程语言 时间:
2020-01-19 00:21:33
阅读次数:
95
package lock; /* 方式三: Lock锁 synchronized和lock的不同 1.sychronized在执行完相应代码块以后属于自动释放同步监视器,lock需要手动启动同步 建议优先使用lock->同步方法块->同步方法(在方法体之外) 实现Runnable对象被三个线程调用, ...
分类:
编程语言 时间:
2020-01-04 12:18:58
阅读次数:
82
背景 最近看到一篇比较有意思的博客,标题是“C语言返回字符串的四种方法”,特对它作一次总结。 核心就是,如何保证一个指针变量在传递的过程中,其在内存不被自动释放,从而避免内存地址的非法引用。 相关知识点 指针(内存地址)在函数调用开始时,形参是对实参的内容浅拷贝,保存在栈中,调用结束后将被系统回收 ...
分类:
其他好文 时间:
2019-12-29 16:34:51
阅读次数:
70
public interface DistributedLock { /** * 加锁 * @param lockKey 锁定的key * @param lockSeconds 锁定时间(单位:秒),超过该锁定时间会自动释放锁,可能会导致并发问题。 * @param expirySeconds 本次 ...
分类:
其他好文 时间:
2019-12-27 11:34:05
阅读次数:
60
内存中的堆和栈 堆: 是程序员手动申请的空间,空间用完需要程序员自己手动释放,也可能会由OS回收,分配方式类似链表; 堆比较大,地址向上增长; 堆一般存放对象 栈: 是系统申请的空间,空间用完系统会自动释放; 栈比较小,地址向下增长; 栈一般存放局部变量 数据结构中的堆和栈 堆: 可以看做一颗树,比 ...
分类:
其他好文 时间:
2019-12-20 18:58:12
阅读次数:
118
在python开发中,变量也是有生命周期的,一旦周期结束,程序会自动清理暂用的空间,释放内存,变量分为两者,一种是局部变量,一种是全局变量,两者具体有什么区别呢…… 一.局部变量 一般而言在函数内部或者类中声明的变量默认都是局部变量。一旦函数结束,变量的生命周期也会结束,占用的空间会被自动释放。 d ...
分类:
编程语言 时间:
2019-12-13 13:51:52
阅读次数:
64