2HZZ国外网址导航喜欢加入收藏
当前位置:国外网 » 站长资讯 » 电脑 » 文章详细 订阅RssFeed
out of memory对话框的出现解决方法

发布时间:2021-03-02,来源:2HZZ外国网址导航

out of memory对话框的出现解决方法,电脑桌面应用程序软件打开后出现out of memory对话框。这说明你电脑的虚拟内存不足,所以这个时候要增加或者清除虚拟内存来解决这个问题。遇到打开应用程序出现out of memory问题多数是,大型软件或者游戏,运行该游戏需要运用大量的电脑虚拟内存。所以遇到电脑打开程序出现out of memory错误就的将电脑虚拟内存放大点才行。以下就是解决out of memory错误的步骤。


out of memory对话框的出现解决方法


1.在电脑左下角找到1.开始菜单-2.所有程序-3.附件(在附件栏里找到运行,点击进入)

在电脑左下角找到1.开始菜单-2.所有程序-3.附件(在附件栏里找到运行,点击进入)


2.在运行栏对话框中输入cmd,点击确定,进入系统管理员界面。


在运行栏对话框中输入cmd,点击确定,进入系统管理员界面。


3.在管理员界面,在命令栏输入:bcdedit /set pae forceenable windows 然后按下键盘上Enter确认键。

在管理员界面,在命令栏输入:bcdedit /set pae forceenable windows 然后按下键盘上Enter确认键。


4.接着就可以看到下面的操作完成提示,再输入:bcdedit /set increaseuserva 3072 然后按下确认键。

接着就可以看到下面的操作完成提示,再输入:bcdedit /set increaseuserva 3072 然后按下确认键。


5.就可以看到命令提示符处理虚拟内存完成。点击右上角的关闭选项关闭命令提示符。

就可以看到命令提示符处理虚拟内存完成。点击右上角的关闭选项关闭命令提示符。


6.接着用鼠标右键点击电脑桌面的“计算机”,在选项栏点击下面的属性。在出现的页面点击左下角的“高级系统设置”


接着用鼠标右键点击电脑桌面的“计算机”,在选项栏点击下面的属性。


7.在弹出的属性面板点击性能旁边的设置,进入设置页面。

在弹出的属性面板点击性能旁边的设置,进入设置页面。


8.在设置页面点击高级在下面会出现虚拟内存驱动分页。点击下面的“更改”


在设置页面点击高级在下面会出现虚拟内存驱动分页。点击下面的“更改”


9.然后点击下面的自定义大小。然后输入虚拟空间的两倍以上的数字,例如:60000MB,设置完之后点击下面的确定就可以了!


然后点击下面的自定义大小。然后输入虚拟空间的两倍以上的数字,例如:60000MB,设置完之后点击下面的确定就可以了!


总结,以上内容操作完成后,将电脑从新启动下,电脑打开后你在点击应用程序及游戏程序基本就不会在出现out of memory对话框了。内存溢出与数据库锁表的问题,可以说是开发人员的噩梦,一般的程序异常,总是可以知道在什么时候或是在什么操作步骤上出现了异常,而且根据堆栈信息也很容易定位到程序中是某处出现了问题。内存溢出与锁表则不然,一般现象是操作一般时间后系统越来越慢,直到死机,但并不能明确是在什么操作上出现的,发生的时间点也没有规律,查看日志或查看数据库也不能定位出问题的代码。
更严重的是内存溢出与数据库锁表在系统开发和单元测试阶段并不容易被发现,当系统正式上线一般时间后,操作的并发量上来了,数据也积累了一些,系统就容易出现内存溢出或是锁表的现象,而此时系统又不能随意停机或重启,为修正BUG带来很大的困难。
内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。为了解决Java中内存溢出问题,我们首先必须了解Java是如何管理内存的。Java的内存管理就是对象的分配和释放问题。在Java中,内存的分配是由程序完成的,而内存的释放是由垃圾收集器(GarbageCollection,GC)完成的,程序员不需要通过调用GC函数来释放内存,因为不同的JVM实现者可能使用不同的算法管理GC,有的是内存使用到达一定程度时,GC才开始工作,也有定时执行的,有的是中断式执行GC。但GC只能回收无用并且不再被其它对象引用的那些对象所占用的空间。Java的内存垃圾回收机制是从程序的主要运行对象开始检查引用链,当遍历一遍后发现没有被引用的孤立对象就作为垃圾回收。
引起内存溢出的原因有很多种,常见的有以下几种:
内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
代码中存在死循环或循环产生过多重复的对象实体;
使用的第三方软件中的BUG;

启动参数内存值设定的过小;


内存溢出解决方法,内存溢出虽然很棘手,但也有相应的解决办法,可以按照从易到难,一步步的解决。
第一步,就是修改JVM启动参数,直接增加内存。这一点看上去似乎很简单,但很容易被忽略。JVM默认可以使用的内存为64M,Tomcat默认可以使用的内存为128MB,对于稍复杂一点的系统就会不够用。在某项目中,就因为启动参数使用的默认值,经常报“OutOfMemory”错误。因此,-Xms,-Xmx参数一定不要忘记加。
第二步,检查错误日志,查看“OutOfMemory”错误前是否有其它异常或错误。在一个项目中,使用两个数据库连接,其中专用于发送短信的数据库连接使用DBCP连接池管理,用户为不将短信发出,有意将数据库连接用户名改错,使得日志中有许多数据库连接异常的日志,一段时间后,就出现“OutOfMemory”错误。经分析,这是由于DBCP连接池BUG引起的,数据库连接不上后,没有将连接释放,最终使得DBCP报“OutOfMemory”错误。经过修改正确数据库连接参数后,就没有再出现内存溢出的错误。
查看日志对于分析内存溢出是非常重要的,通过仔细查看日志,分析内存溢出前做过哪些操作,可以大致定位有问题的模块。
第三步,安排有经验的编程人员对代码进行走查和分析,找出可能发生内存溢出的位置。重点排查以下几点:
检查代码中是否有死循环或递归调用。
检查是否有大循环重复产生新对象实体。
检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。
第四步,使用内存查看工具动态查看内存使用情况。某个项目上线后,每次系统启动两天后,就会出现内存溢出的错误。这种情况一般是代码中出现了缓慢的内存泄漏,用上面三个步骤解决不了,这就需要使用内存查看工具了。
内存查看工具有许多,比较有名的有:Optimizeit Profiler、JProbeProfiler、JinSight和Java1.5的Jconsole等。它们的基本工作原理大同小异,都是监测Java程序运行时所有对象的申请、释放等动作,将内存管理的所有信息进行统计、分析、可视化。开发人员可以根据这些信息判断程序是否有内存泄漏问题。一般来说,一个正常的系统在其启动完成后其内存的占用量是基本稳定的,而不应该是无限制的增长的。持续地观察系统运行时使用的内存的大小,可以看到在内存使用监控窗口中是基本规则的锯齿形的图线,如果内存的大小持续地增长,则说明系统存在内存泄漏问题。通过间隔一段时间取一次内存快照,然后对内存快照中对象的使用与引用等信息进行比对与分析,可以找出是哪个类的对象在泄漏。
通过以上四个步骤的分析与处理,基本能处理内存溢出的问题。当然,在这些过程中也需要相当的经验与敏感度,需要在实际的开发与调试过程中不断积累。