内存那么大,有没有内存条点不亮解决办法法?

【小白求助】内存条太大装不上怎么办!【笔记本吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:2,298,246贴子:
【小白求助】内存条太大装不上怎么办!收藏
要掰开么。。
有人么有人么有人么
中体精英致力于攀岩事业20年!
275京东买的啊好心痛
je suis le poisson ------啊?被哥特装的白丝LOLI踩踏?别开玩笑了我也是有尊........我需要付多少钱?
钓鱼十循吧
都憋跟我说话我心痛
我是鱼 ?﹏﹏ Death丶孤獨为您报时: 日 周三 11时02分05秒005毫秒
吃了屎了退款去
我说你们怎么一个个都滑稽脸我差点真掰开了
貌似真写了台式机我看骇客神条这名字很厉害才买的
买内存条要看好型号啊……这摆着台式机的……能退就退吧,不能退转卖吧。可怜的来领摸摸头一个
退了好丢人
买之前不看清楚吗
I am a fish
i is fishing
登录百度帐号微信占内存太大了,教你深度清理内存的方法,有的人能释放1G_腾讯视频
三倍流畅播放
1080P蓝光画质
新剧提前看
1080P蓝光画质
纯净式无框播放器
三倍流畅播放
扫一扫 手机继续看
下载需先安装客户端
{clientText}
客户端特权:
3倍流畅播放
当前播放至 {time}
扫一扫 手机继续看
微信占内存太大了,教你深度清理内存的方法,有的人能释放1G
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要SQL2008内存占用过大,有没有什么办法?
[问题点数:40分,结帖人wufeng4552]
SQL2008内存占用过大,有没有什么办法?
[问题点数:40分,结帖人wufeng4552]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2012年10月 MS-SQL Server大版内专家分月排行榜第一
2012年9月 MS-SQL Server大版内专家分月排行榜第二
2012年12月 MS-SQL Server大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第二
2014年8月 总版技术专家分月排行榜第一2014年7月 总版技术专家分月排行榜第一2014年6月 总版技术专家分月排行榜第一2014年5月 总版技术专家分月排行榜第一2014年4月 总版技术专家分月排行榜第一2014年3月 总版技术专家分月排行榜第一2014年1月 总版技术专家分月排行榜第一2013年12月 总版技术专家分月排行榜第一
2013年6月 MS-SQL Server大版内专家分月排行榜第一
2013年7月 MS-SQL Server大版内专家分月排行榜第三
匿名用户不能发表回复!|> 博客详情
摘要: java 大数据处理之内存溢出解决办法
一、内存溢出类型
1、java.lang.OutOfMemoryError: PermGen space
JVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成溢出,或者tomcat热部署时侯不会清理前面加载的环境,只会将context更改为新部署的,非堆存的内容就会越来越多。
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。& 一个最佳的配置例子:(经过本人验证,自从用此配置之后,再未出现过tomcat死掉的情况)
set JAVA_OPTS=-Xms800m -Xmx800m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m
2、java.lang.OutOfMemoryError: Java heap space
第一种情况是个补充,主要存在问题就是出现在这个情况中。其默认空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。如果内存剩余不到40%,JVM就会增大堆到Xmx设置的值,内存剩余超过70%,JVM就会减小堆到Xms设置的值。所以服务器的Xmx和Xms设置一般应该设置相同避免每次GC后都要调整虚拟机堆的大小。假设物理内存无限大,那么JVM内存的最大值跟操作系统有关,一般32位机是1.5g到3g之间,而64位的就不会有限制了。
注意:如果Xms超过了Xmx值,或者堆最大值和非堆最大值的总和超过了物理内存或者操作系统的最大限制都会引起服务器启动不起来。
垃圾回收GC的角色
JVM调用GC的频度还是很高的,主要两种情况下进行垃圾回收:
当应用程序线程空闲;另一个是java内存堆不足时,会不断调用GC,若连续回收都解决不了内存堆不足的问题时,就会报out of memory错误。因为这个异常根据系统运行环境决定,所以无法预期它何时出现。
根据GC的机制,程序的运行会引起系统运行环境的变化,增加GC的触发机会。
为了避免这些问题,程序的设计和编写就应避免垃圾对象的内存占用和GC的开销。显示调用System.GC()只能建议JVM需要在内存中对垃圾对象进行回收,但不是必须马上回收,
一个是并不能解决内存资源耗空的局面,另外也会增加GC的消耗。
二、JVM内存区域组成
简单的说java中的堆和栈
java把内存分两种:一种是栈内存,另一种是堆内存
1。在函数中定义的基本类型变量和对象的引用变量都在函数的栈内存中分配;
2。堆内存用来存放由new创建的对象和数组
在函数(代码块)中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量所分配的内存空间;在堆中分配的内存由java虚拟机的自动垃圾回收器来管理
堆的优势是可以动态分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的。缺点就是要在运行时动态分配内存,存取速度较慢;
栈的优势是存取速度比堆要快,缺点是存在栈中的数据大小与生存期必须是确定的无灵活性。
java堆分为三个区:New、Old和Permanent
GC有两个线程:
新创建的对象被分配到New区,当该区被填满时会被GC辅助线程移到Old区,当Old区也填满了会触发GC主线程遍历堆内存里的所有对象。Old区的大小等于Xmx减去-Xmn
java栈存放
栈调整:参数有+UseDefaultStackSize -Xss256K,表示每个线程可申请256k的栈空间
每个线程都有他自己的Stack
三、JVM如何设置虚拟内存
提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。
提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
提示:JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。
默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
提示:假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。
简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,
这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了
提示:注意:如果Xms超过了Xmx值,或者堆最大值和非堆最大值的总和超过了物理内存或者操作系统的最大限制都会引起服务器启动不起来。
提示:设置NewSize、MaxNewSize相等,"new"的大小最好不要大于"old"的一半,原因是old区如果不够大会频繁的触发"主" GC ,大大降低了性能
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;
由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
解决方法:手动设置Heap size
修改TOMCAT_HOME/bin/catalina.bat
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"
四、性能检查工具使用
定位内存泄漏:
JProfiler工具主要用于检查和跟踪系统(限于Java开发的)的性能。JProfiler可以通过时时的监控系统的内存使用情况,随时监视垃圾回收,线程运行状况等手段,从而很好的监视JVM运行情况及其性能。
1. 应用服务器内存长期不合理占用,内存经常处于高位占用,很难回收到低位;
2. 应用服务器极为不稳定,几乎每两天重新启动一次,有时甚至每天重新启动一次;
3. 应用服务器经常做Full GC(Garbage Collection),而且时间很长,大约需要30-40秒,应用服务器在做Full GC的时候是不响应客户的交易请求的,非常影响系统性能。
因为开发环境和产品环境会有不同,导致该问题发生有时会在产品环境中发生,通常可以使用工具跟踪系统的内存使用情况,在有些个别情况下或许某个时刻确实是使用了大量内存导致out of memory,这时应继续跟踪看接下来是否会有下降,
如果一直居高不下这肯定就因为程序的原因导致内存泄漏。
五、不健壮代码的特征及解决办法
1、尽早释放无用对象的引用。好的办法是使用临时变量的时候,让引用变量在退出活动域后,自动设置为null,暗示垃圾收集器来收集该对象,防止发生内存泄露。
对于仍然有指针指向的实例,jvm就不会回收该资源,因为垃圾回收会将值为null的对象作为垃圾,提高GC回收机制效率;
2、我们的程序里不可避免大量使用字符串处理,避免使用String,应大量使用StringBuffer,每一个String对象都得独立占用内存一块区域;
String str = "aaa";
String str2 = "bbb";
String str3 = str + str2;//假如执行此次之后str ,str2以后再不被调用,那它就会被放在内存中等待Java的gc去回收,程序内过多的出现这样的情况就会报上面的那个错误,建议在使用字符串时能使用StringBuffer就不要用String,这样可以省不少开销;
3、尽量少用静态变量,因为静态变量是全局的,GC不会回收的;
4、避免集中创建对象尤其是大对象,JVM会突然需要大量内存,这时必然会触发GC优化系统内存环境;显示的声明数组空间,而且申请数量还极大。
这是一个案例想定供大家警戒
使用jspsmartUpload作文件上传,运行过程中经常出现java.outofMemoryError的错误,
检查之后发现问题:组件里的代码
m_totalBytes = m_request.getContentLength();
m_binArray = new byte[m_totalBytes];
问题原因是totalBytes这个变量得到的数极大,导致该数组分配了很多内存空间,而且该数组不能及时释放。解决办法只能换一种更合适的办法,至少是不会引发outofMemoryError的方式解决。参考:
5、尽量运用对象池技术以提高系统性能;生命周期长的对象拥有生命周期短的对象时容易引发内存泄漏,例如大集合对象拥有大数据量的业务对象的时候,可以考虑分块进行处理,然后解决一块释放一块的策略。
6、不要在经常调用的方法中创建对象,尤其是忌讳在循环中创建对象。可以适当的使用hashtable,vector 创建一组对象容器,然后从容器中去取那些对象,而不用每次new之后又丢弃
7、一般都是发生在开启大型文件或跟数据库一次拿了太多的数据,造成 Out Of Memory Error 的状况,这时就大概要计算一下数据量的最大值是多少,并且设定所需最小及最大的内存空间值。
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥手机签到经验翻倍!快来扫一扫!
4G内存只有1.95G可用,分享一下解决办法(“为硬件保留的内存”过大)
11137浏览 / 1回复
  首先这是一个类似问题的汇总帖,提供4G内存或4G以上内存只有XXXGB可用的解决办法。事情的起因就是最近帮人修电脑时,碰到的二台电脑都存在这样的问题,就是4G内存只有不到2GB可用的现象。为解决这个问题,前前后后还是花费了一些时间与精力的。网上虽然有不少类似的问答帖,而且也有不少解决方案,但是没什么总结,条理有些乱。下面我就结合这次的经历,总结一下这类问题的解决方法。第一:系统为32位,内存为4G,或者4G以上。无核显或者集显。解决方案:更换成64位操作系统。至于破解补丁之类的,就不要相信了,那只是自欺欺人的一种做法。虽然在系统中显示正常,但实际上,32位系统无法完全完整识别到4GB内存的。至于原因,可以在网上查,这里就不在重复介绍了。第二:系统为64位,内存为4G,或者4G以上。有核显或者集显,无独显。解决方案:被核显或者集显占用的共享内存是无法禁用的,只能设置使用大小,可以查看bios里面有关的显存设置。具体如何查看,设置,看各自主板的说明书。第三:系统为64位,内存为4G,或者4G以上。有核显或者集显,有独显。解决方案:1:首先查看是否禁用了核显或者是集显,因为一些主板,默认是不禁用核显或是集显的。虽然按常理来说,只要接入独立显卡后,主板默认就会禁用核显或者集显。但那是常理。有些主板是不按常理出牌的。2:禁用核显或者集显后,还显示只有XXXGB可用。调整内存的顺序。如果是一根内存,那把每个内存插槽都挨个试试。如果是二根内存,那就要把内存插槽交替来试试了。例如四个内存插槽,分别是A1,A2,B1,B2。其中A1,B1的插槽是一种颜色的,A2,B2的插槽是另一种颜色的。那么我们就要把二根内存分别试试A1,A2,试试B1,B2,再试试A1,B1,试试A2,B2,多数就可以解决了。(一般来说,这种内存插槽引起问题,多数是主板的内存兼容性造成的,可以试着刷最新的主板BIOS解决。如果刷新BIOS还解决不了,可以试着更换不同品牌内存试试。再解决不了,就只能按之前介绍的,把内存安装到不同内存插槽的方法来试试了。)其它:1:使用驱动自带的配置软件进行设置。一般在双显卡里有这类软件,设置成独立显卡为主显卡,不同的显卡驱动设置不一样,ati显卡比n卡要好设置些。(在双显卡笔记本电脑很常见。)2:开始->附件->运行->msconfig.exe,单击引导,高级选项,查看是否设置了最大内存的限制,如果打了勾,4g内存对应设置成最大值4096,不能设置的话,就设成4095,也可以将勾去掉。(如果还是不行,可以再试试,如果原先最大内存的限制前打了勾,那就去掉,重启。再在原先最大内存的限制前打了勾,重启。如果先原的没打勾,就打上重启,然后再去掉重启。也就是说要重启二次。)3:如果是双内存,首先切断电脑电源,拔下两根中任意一根内存条,然后给电脑通电,可以选择开机或者不开机(开机可进入操作系统),两种方式都可以尝试。接下来一直按住机箱上开机键,等待几秒钟,直至电脑完全关闭。务必断开电脑电源之后,将之前拔下的内存重新插入主板内存插槽。等待数秒之后重新开机。如果是单内存用户,首先切断电脑电源,拔下内存,然后给电脑通电,可以选择开机或者不开机(反正没内存,也进不了操作系统),两种方式都可以尝试。接下来一直按住机箱上开机键,等待几秒钟,直至电脑完全关闭。务必断开电脑电源之后,将之前拔下的内存重新插入主板内存插槽。等待数秒之后重新开机。  这次修的二台主机,第一台使用第三种方案中1的方式解决的。第二台使用第三种方案中2的方式解决的。  第一台主机的问题解决还是比较顺利的,着重介绍一下第二台的主机的解决过程,此平台是A75的。&  开机打开系统后,发现4GB的内存只有1.95GB可用。&  使用系统自带评分,4G的内存,只得到了5.5分,比硬盘还要低一些。&  打开任务管理器,进入资源监视器查看内存一项,为硬件保留的内存达到了2072MB。然后直接打开主板BIOS,发现已经禁用核显。然后升级了主板的最新BIOS,也不行。在网上查了一些解决方法,都不成功。最后无意中看到,有可能是主板内存插槽的问题。&  这块主板是华擎A75 极限玩家 6。&  有四个内存插槽。在BIOS中查看,分别是A1,A2,B1,B2。其中A1,B1的插槽是蓝色的,A2,B2的插槽是白色的。&  处理器是A6-3650,是一款APU产品。&&  内存是宇瞻的黑豹内存,我之前也用过几根,感觉这种金色的马甲很漂亮。后来宇瞻还推出过黑色马甲的黑豹内存。现在好像现在已经被宇瞻的雷鸟内存取代了。&  一共是二根内存,但不是套装。每根内存的容量为2G。内存的规格为2GB UNB PC3-10600 CL9,其中PC3代表台式机DDR3。10600是用带宽来命名,=1是DDR等效频率。&  刚开始内存插槽使用的是同色方案。(在A1,A2,B1,B2四个内存插槽中,其中A1,B1的插槽是蓝色的,A2,B2的插槽是白色的。)后来改成了异色方案,也就是使用内存插槽A1,A2或者是B1,B2。  打开系统后,可以看到1.95G可用的提示终于消失,为完整的4G内存。&  使用系统自带评分测试了一下,内存的得分从之前的5.5增加到了7.2,增加的幅度还是非常高的。  后来通过更换不同内存测试,发现并非是内存的问题,而是主板的问题。看样子此主板存在严重的内存兼容性问题。可惜厂家的BIOS已经多年不更新了,最后一次更新,就是增加了“提高内存的兼容性”。看样子以后估计也只能使用这种调换内存位置的方法解决了。对了,还有一个问题,就是在这块主板上,打不开双通道,用CPU-Z查看,都是灰色的。  如果你使用的电脑,在系统中出现内存XXXGB可用的提示,不妨试着这些方法解决一下。
一些老的AMD平台的确是存在内存兼容问题,特别是使用核显的平台,我也碰到过一次这样的问题,也是换个插槽后就消失了。
用户名/注册邮箱/注册手机号
其他第三方号登录}

我要回帖

更多关于 内存溢出解决办法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信