(1) 增加虚拟内存:cmd -> taskmgr 打开任务管理器,查看物理内存和虚拟内存,可观察matlab在运行过程中是否超过物理内存和虚拟内存。若超过,增加虚拟内存的方法是不可行的。物理内存不足的时候可以通过将电脑的虚拟内存设置得大一点,可一定程度上缓解内存不足的压力,但缓解是非常有限,核心还是增加物理内存。

查看虚拟内存方法:

(1a)右击“我的电脑”–属性–高级系统设置—-系统属性—–高级—-在性能框内点“设置”

(1b)性能选项对话框,点第二个标签“高级”

(1c)页面文件大小后面的数字就是虚拟内存。

(1d)若分页文件大小0,表示没有设置虚拟内存

增加虚拟内存方法

重复(1a)->(1d),

(1e)点击性能选项-高级-更改,取消选定的虚拟内存页面顶部的复选框,然后点击系统所在的驱动器,接着点击自定义大小,可在空白框中输入你索要设置的虚拟内存的大小即可。

(2)使用PACK:PACK可以将matlab中的变量导出到磁盘中,以增加可用内存。

如何使用PACK:

当内存被分为很多碎片以后,其实本身可能有很大的空间,只是没有作构的连续空间即大的Block而已。如果此时Out of Memory,此时使用pack命令可以很好的解决此问题。

help文件 用法:

pack

pack filename

pack(‘filename’)

pack可以为用户整理内存的机制在于,pack函数重新整理MATLAB工作空间中驻留的变量,将原来断断续续的内存整理的连续起来,这样原来断断续续的内存可能不足以存储大的矩阵,而整理之后,可以很显著的提高内存的使用效率,最后重新分配的空间将是连续的,避免掉原来断断续续的内存使用。整理步骤:

(1)将base空间以及全局变量保存到一个mat文件

(2)清空工作空间中的所有资源

(3)重新载入mat文件中保存的base空间变量和全局变量,然后删掉mat文件

备注: pack不能提高MATLAB所拥有的虚拟内存数量,如果想要增加这个数量,也就是使MATLAB单独变量的最大size或者同时存在的变量所占有的最大空间增大,需要提高系统的虚拟内存。

Change the current folder to one that is writable, run pack, and return to the previous folder.

cwd = pwd;

cd(tempdir);

pack

cd(cwd)

feature('memstats') % 查看matlab内存使用情况

(3) 打开计算机的3GB开关(64位的WIN7不用调)。

3GB切换(3GB switch):由于在windows上运行matlab时,如果内存的使用超过约1.7G左右就要出现这种错误,而无论你有多大的内存也没用。MATLAB现在支持3GB切换(3GB switch)启动选项(boot option),配置额外的1GB的可寻址内存到每个程序上。这增加了你可以储存到MATLAB workspace中资料的总量约到2.7 GB。这相当于33亿的精度值。此新增的内存区块和MATLAB使用剩下的(内存)并不是连续的,所以你不能建立一个数组来填满此空间。

具体做法:修改C:\ Boot.ini文件如下:

[boot loader]

timeout=30

default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS = “Microsoft Windows XP Professional”

multi(0)disk(0)rdisk(0)partition(2)\WINDOWS=”Microsoft Windows XP Professional” /3GB

注意后面的/3GB就是后加上的。重新启动系统再次运行matlab。

打开3GB的目的:32位系统(包括XP和32位的win7),默认情况下不允许某个程序调用超过2G的内存,一旦超过,就自动结束掉该程序。因此打开3GB,就是为了允许大型程序,比如3DMAX,调用最多3G的内存

matlab java.lang.OutOfMemoryError

Java虚拟机内存不够用了.可以增加最大内存设置.

查找matlab根路径.在matlab命令行中敲入:matlabroot

显示根路径,如:D:\CMWang\MATLABR2014b

2.查看当前Java虚拟机最大堆内存, 敲入:

java.lang.Runtime.getRuntime.maxMemory

3.查看Java虚拟机版本.敲入:

version -java

4.在 $MATLAB\bin\$ARCH 路径下新建java.opts文件.

MATLAB是根路径,例如D:\CMWang\MATLABR2014bARCH是系统架构.例如win64,则在D:\CMWang\MATLABR2014b\bin\win64下新建java.opts文件.

5.用记事本打开java.opts文件,对于不同的版本的Java虚拟机,输入:

The following table shows the default settings MATLAB uses for versions of the JVM:

JVM Initial Heap Size Max Heap Size

1.6.0 -Xms64m -Xmx128m (32-bit)

-Xmx196m (64-bit)

1.5.0 -Xms64m -Xmx96m (32-bit)

-Xmx128m (64-bit)

1.4.2 -Xms16m -Xmx96m

1.3.1 -Xms16000000 -Xmx64000000

1.2.2 -Xms16000000 -Xmx64000000

1.1.8 -ms16000000 -mx64000000

例如我的Java是1.4.2,在java.opts文件写入-Xmx96m,保存就ok啦

如果输入错误就报错:warning : Failed to start to Java Virtual machine

6. 重启matlab,敲入

java.lang.Runtime.getRuntime.maxMemory

显示最大内存改变,设置成功.

备注: 可在matlab->file->preference->General->Java Heap Memory,可以设置Java Heap Memory大小,其最大可以设置的值是内存大小的1/4。如果想用的Java Heap Memory大于内存的1/4,无法利用Preference进行设置。

采用上述在Matlab安装目录下添加java.opts的方法,可以任意设置Java Heap Memory的大小,当设置的大小小于内存的1/4时,Preference中Java Heap Memory面板显示的是相应的值;当大于内存的1/4时,面板显示值是其最大值,但实际上使用的却是我们在java.opts中设置的大小。设置Java Heap Memory面板的主要目的是防止一些人任意改变,破坏操作系统.

主要参考:

http://cn.mathworks.com/matlabcentral/answers/92813-how-do-i-increase-the-heap-space-for-the-java-vm-in-matlab-6-0-r12-and-later-versions

http://cn.mathworks.com/matlabcentral/answers/99763-why-do-i-receive-a-java-exception-when-starting-matlab-6-5-r13-or-later

http://blog.sina.com.cn/s/blog_890c6aa30101b5fy.html

matlab java堆内存溢出,matlab内存溢出的解决方案相关推荐

  1. 一步步优化JVM四:决定Java堆的大小以及内存占用

    到目前为止,还没有做明确的优化工作.只是做了初始化选择工作,比如说:JVM部署模型.JVM运行环境.收集哪些垃圾回收器的信息以及需要遵守垃圾回收原则.这一步将介绍如何评估应用需要的内存大小以及Java ...

  2. JVM优化:决定Java堆的大小以及内存占用

    转载:https://blog.csdn.net/zhoutao198712/article/details/7783070    到目前为止,还没有做明确的优化工作.只是做了初始化选择工作,比如说: ...

  3. modeler java堆空间,JVM|02内存模型

    JVM内存模型 概述 Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保 ...

  4. Java堆、栈、内存分析

    在 JAVA 中,有六个不同的地方可以存储数据: 1. 寄存器( register ).这是最快的存储区,因为它位于不同于其他存储区的地方--处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根 ...

  5. Java 堆(Heap)内存简单图

    首先了解下JVM结构图:CSDN 和 Java程序的运行流程CSDN JDK8堆内存(Heap)结构 JDK7堆内存(Heap)结构

  6. 【深入理解Java虚拟机学习笔记】第二章 Java 内存区域与内存溢出异常

    最近想好好复习一下java虚拟机,我想通过深读 [理解Java虚拟机 jvm 高级特性与最佳实践] (作者 周志明) 并且通过写一些博客总结来将该书读薄读透,这里文章内容仅仅是个人阅读后简短总结,加强 ...

  7. 《深入理解JAVA虚拟机》周志明 第三版 - 第二章 JAVA内存区域与内存溢出异常

    一. 概述 在虚拟机自动内存管理机制下,不容易出现内存泄漏和内存溢出问题,但是一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误.修正问题将会成为一项异常艰难的工作. 二. ...

  8. Java内存区域与内存溢出异常详解

    文章目录 运行时数据区域 程序计数器(线程私有) Java虚拟机栈(线程私有) 局部变量表 操作数栈 动态链接 方法返回地址 本地方法栈(线程私有) Java堆(全局共享) 方法区(全局共享) 运行时 ...

  9. 深入理解Java虚拟机(二)Java内存区域与内存溢出异常

    一.前言 对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题,看起来由虚拟机管理内存一切都很美好 ...

最新文章

  1. 13. 微型计算机中,传送cpu发出的读/写指令的总线是,我的微机原理题库
  2. 走出“搜索引擎营销”三个误区
  3. laravel-admin配置安装完新手使用
  4. 设计模式之_Iterator_03
  5. 数据库编程——JDBC 配置
  6. 朴素贝叶斯实现分类_关于朴素贝叶斯分类及其实现的简短教程
  7. Redis(二):Redis入门与性能测试
  8. BitHacks--位操作技巧
  9. 51单片机 驱动有源/无源蜂鸣器+Proteus仿真
  10. 三种简单的浏览器设置自动刷新网页
  11. 奶爸日记2 - 鑫鑫感动了婆婆
  12. 精忠报国用计算机弹,同人精忠报国岳飞传
  13. 设计模式-模板方法(TemplateMethod)模式
  14. Google 机器学习术语表
  15. OpenCV-Python之画椭圆
  16. Element el-select 选择器(下拉框)详解
  17. unlikely 与 likely的作用
  18. CDA学习之Pandas - 常用函数和75个高频操作
  19. 爱剪辑怎么制作淘宝视频?详细的制作技巧,教你快速搞定淘宝主图视频
  20. 树莓派linux谷歌浏览器设置,树莓派4B踩坑指南 - (12)谷歌浏览器书签同步

热门文章

  1. 【洛谷 P7299】 【并查集】 Dance Mooves S
  2. python海伦公式计算三角形面积
  3. 2019年西南交大计算机专硕
  4. 中忻嘉业:抖音小店怎样来做
  5. json数组删除重复项
  6. Go语言 - 并发控制
  7. Webdriver - webdriver hangs when get or click
  8. 九章量子计算机属于专用计算机吗,九章“问世”了 你知道什么是量子计算机吗?...
  9. 提示502的解决办法
  10. Intraweb之EasyUI篇