Matlab的内存分配

原创 2017年01月03日 12:56:38
%% Memory Allocation (Matlab的内存分配)
% Creating and Modifying Arrays
% When you assign a numeric or character array to a variable, 
% MATLAB allocates a contiguous virtual block of memory and stores the array data in that block.
% MATLAB also stores information about the array data, such as its class and dimensions, in a separate, 
% small block of memory called a header. 
% (有两部分,一部分内存分配给变量代表的数组的数据,另一部分储存有数组数据的信息(),例如:class and dimensions)
% Array Headers 对于大的数据集有用
 
% If you add new elements to an existing array, MATLAB expands the existing array in memory in a way that keeps its storage contiguous. 
% This usually requires finding a new block of memory large enough to hold the expanded array. 
% MATLAB then copies the contents of the array from its original location to this new block in memory,
% adds the new elements to the array in this block, and frees up the original array location in memory.
% If you are working with large data sets, you need to be careful when increasing the size of an array to avoid getting errors caused by insufficient memory
% 对于不是预先分配内存,临时添加一个元素,通常先得找一块大的内存(为了保证连续性),将值复制过去,再添加,然后释放掉原先的内存,这样的话很可能会出错

% If you remove elements from an existing array,
% MATLAB keeps the memory storage contiguous by removing the deleted elements, 
% and then compacting its storage in the original memory location.
% 删掉某个元素时,会在保证连续性的情况下,去除该元素,压缩对应内存

% b = a;只要不修改 b 那么 a b 共用一个地址,修改之后将 a 赋值给 b ,在修改 b 中的值
memory 
A = rand(5e7,1); % Store 400 MB array as A. Memory used = 381MB
% 内存增加 381 M
memory
B = A; % 内存不变
memory
B(1) = 3; % 内存增加 381 M
memory
%% Memory Management Functions
memory  % displays or returns information about how much memory is available and how much is used by MATLAB. 
whos % shows how much memory MATLAB has allocated for variables in the workspace.
pack  % saves existing variables to disk, and then reloads them contiguously. This reduces the chances of running into problems due to memory fragmentation.
clear % removes variables from memory. One way to increase the amount of available memory is to periodically clear variables from memory that you no longer need.
save % selectively stores variables to the disk. This is a useful technique when you are working with large amounts of data. Save data to the disk periodically, and then use the clear function to remove the saved data from memory.
load % reloads a data file saved with the save function.
quit % exits MATLAB and returns all allocated memory to the system. This can be useful on UNIX? systems, which do not free up memory allocated to an application (for example, MATLAB) until the application exits.

版权声明:本文为博主原创文章,未经博主允许不得转载。

解析STL中典型的内存分配

1 vector 在C++中使用vector应该是非常频繁的,但是你是否知道vector在计算内存分配是如何么?        在c++中vector是非常类似数组,但是他比数组更加灵活,这就表...
  • wallwind
  • wallwind
  • 2012年03月23日 02:26
  • 3819

python源码分析----内存分配(2)

上一篇说到了,在python的内存分配中两个非常重要的方法:PyObject_Malloc和PyObject_Free 在具体的来这两个方法之前,先要看看别的一些东西...
  • fjs_cloud
  • fjs_cloud
  • 2015年05月24日 20:36
  • 1002

Matlab预分配内存

预分配内存简介:对于for,while循环,在循环的过程中每次不断的增加数据结构的大小,影响了性能和内存的使用。重复的调整数据的大小需要Matlab花费额外的时间寻找更大的连续内存块,并且将现在的数组...
  • xuluhui123
  • xuluhui123
  • 2016年09月29日 09:58
  • 11453

内存分配方式有几种?

内存分配方式有几种? 静态存储区 栈 堆 的内存分配 1,从静态存储区域分配内存。程序编译的时候内存已经分配好了,并且在程序的整个运行期间都存在,例如全局变量。 2,在栈上创建。在执行函数时,函...
  • cddchina
  • cddchina
  • 2013年10月12日 09:11
  • 9982

操作系统常见内存分配算法及优缺点

常见内存分配算法及优缺点如下:   (1)首次适应算法。使用该算法进行内存分配时,从空闲分区链首开始查找,直至找到一个能满足其大小需求的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存分配给...
  • u012387575
  • u012387575
  • 2016年04月01日 10:30
  • 2042

《深入理解Java虚拟机》读书笔记——内存分配与回收策略

概述JVM采用分代的垃圾回收策略:不同对象的生命周期是不一样的。目前JVM分代主要是分三个年代: 新生代:所有新创建的对象都首先在新生代进行内存分配。新生代具体又分为3个区,一个Eden区、一个Fro...
  • zinss26914
  • zinss26914
  • 2015年08月17日 11:21
  • 1377

递归 内存分配 指针

http://blog.csdn.net/changbaolong/article/details/6928140 最近写了一些代码,但从编程的角度看,遇到问题最多的就是递归、内存的动态分配以及指针...
  • miao6664659
  • miao6664659
  • 2012年10月20日 22:41
  • 787

Redis源码分析(二十五)--- zmalloc内存分配实现

时间过的很快,经过快1个月的时间学习,本人对Redis源代码的分析已经超过了一半,上几次的学习,我主要的是对于Redis工具类的代码进行了学习。后面的几天我将会学习Redis代码中的一些封装类的实现,...
  • Androidlushangderen
  • Androidlushangderen
  • 2014年10月31日 19:10
  • 4204

浅谈Java内存分配策略

Java 内存分配策略 Java 程序运行时的内存分配策略有三种,分别是静态分配,栈式分配,和堆式分配,对应的,三种存储策略使用的内存空间主要分别是静态存储区(也称方法区)、栈区和堆区。 静态存...
  • shangzhongjia
  • shangzhongjia
  • 2016年09月11日 20:43
  • 660

一道关于内存分配的笔试题

void GetMemory(char *p)   {   p = (char *)malloc(100);   }   void Test(void)   {   char *str =...
  • z1002137615
  • z1002137615
  • 2015年11月05日 18:04
  • 515
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Matlab的内存分配
举报原因:
原因补充:

(最多只允许输入30个字)