共享内存可以说最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A,B共享内存的意思是,同一块物理内存被映射到进程A,B各自的进程地址空间。进程A可以及时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和..
分类:
其他好文 时间:
2016-04-14 22:40:58
阅读次数:
269
Object obj=new Object(); 一句很简单的代码,但是这里却设计Java栈,Java堆,java方法去三个最重要的内存区域之间的关联。 假设这句代码出现在方法体中。 1.Object obj将反映到Java栈的本地变量表,这是一个本地变量的定义。是一个引用类型。 2.new Obj ...
分类:
其他好文 时间:
2016-04-12 00:21:24
阅读次数:
116
一天一个变成了几天一个,最近接受的新东西太多、太快,有好多需要blog的但没有时间,这些基础知识应该是要深挖并好好研究的,不应该每次都草草了事,只看个皮毛。 数组: JVM将数组存储在一个称为堆(heap)的内存区域中,堆用于动态内存分配,在堆中内存块可以按随意的顺序分配和释放 1.int[] a; ...
分类:
编程语言 时间:
2016-04-11 22:26:29
阅读次数:
201
在C++中,我们经常难以说清楚全局变量、局部变量和静态局部变量的区别。本博客从变量存储特性和标识符作用域两个角度区分这三个变量。 首先,我们来看看C++程序的内存区域是如何分配的。 从上图,我们可以看到,C++程序的内存区域分为代码区、全局数据区、堆区和栈区。其中,全局变量和静态局部变量存放在全局数 ...
分类:
编程语言 时间:
2016-04-06 02:09:46
阅读次数:
246
程序计数器 指令运行的指示器. 每一个线程都有独立的程序计数器,互无影响,我们称这类区域为线程私有的内存. 运行Java方法,计数器记录的是正在运行的虚拟机字节码指令地址;假设运行的是native方法,这个计数器为空. 此内存区域唯一一个没有规定不论什么OutOfMemoryError的区域. 虚拟 ...
分类:
编程语言 时间:
2016-04-02 12:08:24
阅读次数:
208
操作系统iOS 中应用程序使用的计算机内存不是统一分配空间,运行代码使用的空间在三个不同的内存区域,分成三个段:“text segment “,“stack segment ”,“heap segment ”。 Objective-C的对象在内存中是以堆的方式分配空间的,并且堆内存是由你释放的,即r ...
分类:
移动开发 时间:
2016-04-01 17:52:37
阅读次数:
143
管理方式: 对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来讲,释放工作有程序员控制,容易产生memory Leak。 申请大小: 栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存区域。这句话的意思是栈顶上的地址和栈的最大容量是系统预先规定好的,在Windows下,栈的 ...
分类:
移动开发 时间:
2016-04-01 09:06:21
阅读次数:
165
堆和栈的区别主要有以下五点: 1、管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来讲,释放工作由程序员控制,容易产生memory leak(内存泄露)。 2、申请大小: 栈是向低地址扩展的数据结构,是一块连续的内存区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,是 ...
分类:
移动开发 时间:
2016-03-29 08:55:41
阅读次数:
187
程序的内存分配 在计算机系统中,运行的应用程序的数据都是保存在内存中,不同类型的数据,保存的内存区域不同,包括: 1、栈区[stack]:由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区[heap]:一般由程序员分配释放,若程序员不释放,程序结束时可 ...
分类:
其他好文 时间:
2016-03-27 12:41:19
阅读次数:
219
memcpy:void*memcpy(void*dest,constvoid*src,size_tn);memmove:void*memmove(void*dest,constvoid*src,size_tn);两个函数均定义在string.h中memcpy:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中1.source和dest所指的内存区域可以重叠..
分类:
其他好文 时间:
2016-03-26 08:16:42
阅读次数:
172