java电脑总是提示内存不足足

今日论坛第 1 个签到,每日签到可得财富值+2,连续5天签到后再连续签到则每日可得财富值
+4,记得每天都来签到哦~
三星两款新机型内部代号曝光
元件存缺陷 Apple Watch将限制供应
谷歌Nexus手机历来深受外界关注,尤其是华为的加入,更是让国内消费者对该系列新机型关注不已。按照之前的信息显示,这款新Nexus手机将搭载海思麒麟930处理器,其外形设计与前代的风格有较大出入。而如今,这款手机出现在了谷歌在美国地区推出的Google Fi虚拟运营商服务宣传视频中,从视频截图上来看,这款新机采用了超窄边框设计。
滚动播报:
多智手机助手
全新WP客户端
站内全文搜索,由百度和塞班合作提供
上一主题:
下一主题:
查看: 1154 | 回复: 11
【已解决】为什么我小五总是提示“内存不足”?
财富值 191
交易信用 0
原创小红花 0
积分/帖子:272
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
诺基亚 5320
来自:江西省
状态: 离线
【已解决】为什么我小五总是提示“内存不足”?
为什么我小五总是提示“内存不足”,我又没有开启什么程序,内存最少还有65m!但为什么会这样呢?求高手解答
[ 本帖最后由 空天飞机 于
22:59 编辑 ]
财富值 4924
交易信用 0
原创小红花 0
积分/帖子:3765
连续签到天数:1
全部签到天数:467
注册时间:
手机型号:
状态: 离线
装的软件太多了?哪怕都在E盘……
财富值 191
交易信用 0
原创小红花 0
积分/帖子:272
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
诺基亚 5320
来自:江西省
状态: 离线
回复 #2 jianing0614 的帖子
软件装多了就这样吗?
我手机大概装了55个!这样有什么影响没?
财富值 191
交易信用 0
原创小红花 0
积分/帖子:272
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
诺基亚 5320
来自:江西省
状态: 离线
回复 #2 jianing0614 的帖子
软件装多了就这样吗?
我手机大概装了55个!这样有什么影响没?
财富值 564
交易信用 0
原创小红花 0
积分/帖子:813
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
NOKIA5320XM
来自:皖淮北
状态: 离线
是不是有些软件不稳定,我也装了几十个软件,没这种情况
财富值 4330
交易信用 0
原创小红花 0
积分/帖子:4487
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
诺基亚5320XM
来自:安徽省滁州市定远县
状态: 离线
偶尔出现这问题很正常!
如果YǒuF~。 不愿再做人。勾√手指,许下诺言 ①生爱着祢.下辈子Ni还是Wǒ的!
(/C5-03/N97)
财富值 10693
交易信用 3
原创小红花 0
人气值 353
荣誉卸任管理组
雄关漫道真如铁,而今迈步从头越
积分/帖子:6722
连续签到天数:1
全部签到天数:79
注册时间:
手机型号:
诺基亚5320,E71,G10
来自:江西赣州于都
状态: 离线
回复 #1 空天飞机 的帖子
经常提示“内存不足”
& && & 移动心机系统的bug,有时候并无任何程序,就提示“内存不足”,可通过刷机,将手机系统刷为国行版本解决,国行系统无此bug;刷机教程请看:
& && & 如非心机提示“内存不足”,则重启手机即可,一般为软件冲突导致的,自行检查一下
若问题已经得到解决;请编辑后在标题前加上[已解决]!
财富值 656
交易信用 0
原创小红花 0
资深潜水员
积分/帖子:707
连续签到天数:1
全部签到天数:2
注册时间:
手机型号:
5320xm→N9006
来自:湖北
状态: 离线
原帖由 空天飞机 于
20:20 发表
为什么我小五总是提示“内存不足”,我又没有开启什么程序,内存最少还有65m!但为什么会这样呢?
求高手解答 建议楼主常用软件安装在C盘(如QQ,UC浏览器等),不常用的软件安装在E盘,那就不会提示内存不足了
财富值 463
交易信用 0
原创小红花 0
积分/帖子:477
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
运行的软件吧,比如你下载个大点的TXT格式的小说,直接在文件管理中打开它就会提示内存不足…
财富值 340
交易信用 0
原创小红花 0
积分/帖子:1522
连续签到天数:2
全部签到天数:47
注册时间:
手机型号:
Hisense-E912S
来自:安徽阜阳界首
状态: 离线
垃圾文件即使清理了么
欢迎关注&/b&
财富值 4924
交易信用 0
原创小红花 0
积分/帖子:3765
连续签到天数:1
全部签到天数:467
注册时间:
手机型号:
状态: 离线
回复 #4 空天飞机 的帖子
一般超过100软件以后可能会这样。50左右的话,应该不会。还是参考楼上几位的意见吧。
财富值 263
交易信用 0
原创小红花 0
积分/帖子:349
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
来自:江西南昌
状态: 离线
心机的bug,或者是软件冲突…
人忄生 难捉~运行java程序时,手机提示内存不足,该怎么办?
运行java程序时,手机提示内存不足,该怎么办?
运行手机QQ浏览器时,提示手机内存不足,建议关闭部分程序。但我手机里的每个java程序对我来说都很有用,一个都不想删除掉,我该怎么办?
那是真的没办法,java机一般内存都不大,你就忍疼删几个吧
不是要你删除·是要你关闭。。
就是你开的程序太多了· 关掉几个
不是这样的,我手机里的java程序一次只能开一个,要打开另一个就必须关闭正在运行中的java程序。
那可能是你装的这个JAVA程序运行时需要的内存太大了·你的手机达不到要求··所以…………
那么在不删除java的情况下如何扩大或挤压内存?手机里又有哪些占内存的垃圾程序?
不能扩大的 ··
你下个360清理一下
手机也能用360吗?
还能用金山呢- -
360什么软件?说清楚些嘛!另外如果换一个2G或3G的内存卡,这种问题会不会缓解?
其他回答 (6)
关掉先,不一定删。
必须要删的。。
它是叫你关闭部分程序,不是删除!不要开那么多就行了
手机内存不足??
我遇见过这种情况, 打开短信,通话记录等, 也许有那个,什么短信什么器。 把里面的那些发了多少个短信,收了多少短信,都把他归零,
通话记录也有个那个,
都归零,在试试。不行我也没法了
运存不够,没办法,只有关掉一部分
相关知识等待您来回答
手机领域专家
当前分类官方群讨论、解答、交流电脑数码相关的疑难问题Weka加载大数据量内存不足时不同平台的解决方法
ubuntu的解决方法
你只要在启动weka的时候,加上如下命令即可:
java -Xmx400M -jar weka.jar
I hit the JAVA OutOfMemory exception when I'm dealing with a
largedataset. It seems that&JAVA
uses a default limit of 64Mb for itsmemory
usage.&&To increase the
limit, you can try the JAVA -Xmx option,
e.g.&& java -Xmx400M -jar
weka.jarThis increases the limit to 400 Mb (my system has
512Mb).& You shouldset your limit depending on the
amount of memory you have available.See this link for more
如果你和我一样设置了脚本,就将weka脚本修改为
#! /bin/bash
java -Xmx400M -classpath $CLASSPATH:weka.jar:libsvm.jar
weka.gui.GUIChooser
这样,就是400m了
用文本编辑器打开RunWeka.ini找到:
# placeholders ("#bla#" in&mand
gets replaced with content of key "bla")
# Note: "#wekajar#" gets replaced by the launcher class, since that
provided as parameter
maxheap=1444m
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。本文详解Java内存溢出
一、内存溢出类型1、java.lang.OutOfMemoryError: PermGen spaceJVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成溢出,或者 tomcat热部署时侯不会清理前面加载的环境,只会将context更改为新部署的,非堆存的内容就会越来越多。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和PermanentGC有两个线程:新创建的对象被分配到New区,当该区被填满时会被GC辅助线程移到Old区,当Old区也填满了会触发GC主线程遍历堆内存里的所有对象。Old区的大小等于Xmx减去-Xmnjava栈存放栈调整:参数有 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 的状况,这时就大概要计算一下数据量的最大值是多少,并且设定所需最小及最大的内存空间值。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。MyEclipse内存不足之JVM内存浅谈
JAVA-OPTS引发的思考 - tanyit的专栏
- 博客频道 - CSDN.NET
2795人阅读
JAVA-OPTS引发的思考
我们在性能测试过程中,经常要修改应用的JAVA-OPTS参数。修改这些参数,不单单是修改这些数字,本着知其所以然的态度,我们要知道这些参数背后的意义。
常见的JAVA-OPTS的配置项。
JAVA_OPTS=”-server -Xms1536m -Xmx1536m -XX:NewSize=320m -XX:MaxNewSize=320m -XX:PermSize=96m -XX:MaxPermSize=256m -Xmn500m -XX:MaxTenuringThreshold=5″
-Xms:设置堆内存池的最小值
-Xmx:设置堆内存池的最大值
-XX:NewSize:设置新对象生产堆内存
-XX:MaxNewSize:设置最大新对象生产堆内存
-XX:PermSize:设置Perm区的大小
XX:MaxPermSize:设置Perm区的最大值
-Xmn:设置Young区的大小
-XX:MaxTenuringThreshold:设置垃圾最大年龄。
更加详细的说明,请参考图1
看到这里,或许你会迷糊什么是堆内存,什么Perm区?这样就引出了第二个思考:JAVA内存模型。
JAVA内存模型如图2所示。
JAVA的内存模型可以分为3个代:Young、Tenured、Perm。有的版本又叫:New、Old、Perm。中文叫:年轻代、终生代、永久代。或许中文还有其他的叫法,但是表示的意思是一样的。
Young和Tenured共同组成了堆内存(heap)。
Young(年轻代)还可以分为Eden区和两个Survivor区(from和to,这两个Survivor区大小严格一至)。新的对象实例总是首先放在Eden区,Survivor区作为Eden区和 Tenured(终生代)的缓冲,可以向 Tenure(终生代)转移活动的对象实例。如图3所示。
在明白了JAVA内存模型后,就引出了第三个思考:Jconsole在性能测试中的使用。Jconsole是我们在性能测试中常用的工具,打开Jconsole后,可以看到很多监控图表。当你明白JAVA内存模型后,也就很容易明白Jconsole的监控图表了。如图4所示。
在Jconsole图中,我们可以很明显看到内存可以分为堆内存和非堆在堆内存。在堆的上面有三个柱子,分别代别的是:Eden、Survivor、Old。Old区就是Tenured区。
在了解上述知识后,我们在使用Jconsole来监控应用的内存时,会更加清晰。
____________________________________
做项目的时候,MyEclipse提示内存不足,我本本内存2G的呀。
错误提示大概如下:
MyEclipse has detected that less than 5% of the 64MB of Perm
Gen (Non-heap memory) space remains. It is strongly recommended
that you exit and restart MyEclipse with new virtual machine memory
paramters to increase this memory. Failure to do so can result in
data loss. The recommended Eclipse memory parameters are:
eclipse.exe -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
以下是我的MyEclipse快捷方式的参数:
&D:\Eclipse 3.2.2\eclipse.exe& -product com.genuitec.myeclipse.product.ide -vmargs -Duser.language=en -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M -Dosgi.splashLocation=&d:\MyEclipse 5.0GA\eclipse\MyEclipseSplash.bmp&
对于MyEclipse的话,直接修改MyEclipse在桌面的快捷方式的参数就可以啦。现在解释这些参数的意思。
-vmargs:说明后面是VM的参数
-Xms40m:虚拟机占用系统的最小内存
-Xmx256m:虚拟机占用系统的最大内存
-XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小,
堆空间剩余小于5%就会警告,建议把这个稍微设
大一点,不过要视自己机器内存大小来设置
-XX:MaxPermSize:最大堆大小。这个也适当大些
-Xmx512M的5%为25.6M,理论上要求-Xmx的数值与-XX:MaxPermSize必须大于25.6M
把里面的参数改为
-XX:PermSize=128M
-XX:MaxPermSize=256M
所以对于我而言,我只要把我的MyEclipse5.0改-XX:PermSize=128M -XX:MaxPermSize=256M,问题解决!
(个人补充一点:参数在你安装的exlipse目录下的eclipse.ini文件中)
   这一段时间,Eclipse总是死掉,几乎是稍微操作快一点就会死掉,几分钟一次,搞得人郁闷至极。浪费了不少时间,在网上搜了下,看到很多朋友也出现类 似的情况,在网上求救,但是网上的办法都只是说通过修改eclipse.ini文件来加大Eclipse的内存。
自己试了下,发现不管用。今天,又死掉了,不过爆出一个经常出现的错误,大意是:permgen space导致内存溢出。实在忍无可忍,上网一搜,发现网络真是个好东西,尤其是对我们这种自学者而言,无疑是授业解惑的良师益友。
这里总结一下自己的经验和网友的经验,希望能够对受此问题折磨的朋友有所参考价值。
解决办法如下:
在eclipse.ini配置文件中加上以下两行
-XX:PermSize=128M
-XX:MaxPermSize=128M
加上上2行后,我的eclipse.ini文件如下所示:
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
-XX:PermSize=128M
-XX:MaxPermSize=128M
这里的内存大小根据自己的物理内存情况来决定吧。
从网上的资料看PermSize大一点肯定更好,而且最好是设置PermSize和MaxPermSize一样大。理由如下:
PermSize 和MaxPermSize如果设置为相同还可以在一定程度上提高性能,因为,PermSize在不断的变化中会需要转移其中的数据。如果固定了以后,则可以减少每次扩大PermSize带来的性能损失。
1、PermGen space简介
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。
说说为什么会内存益出:
(1)这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同。
(2) GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS 的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。
如果你的WEB APP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
解决方法: 手动设置MaxPermSize大小
修改TOMCAT_HOME/bin/catalina.sh,在echo &Using CATALINA_BASE: $CATALINA_BASE&上面加入以下行:
JAVA_OPTS=&-server -XX:PermSize=64M -XX:MaxPermSize=128m
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以减少jar 文档重复占用内存
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
这里有几个问题:
1. 各个参数的含义什么?
2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?
3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?
下面我们一一进行回答
1. 各个参数的含义什么?
参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。
堆(Heap)和非堆(Non-heap)内存
按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。
堆内存分配
JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
非堆内存分配
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
JVM内存限制(最大值)
首先JVM内存限制于实际的最大物理内存(废话!呵呵),假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。
2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?
通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因:
1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;
2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。
3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?
那为什么同样的参数在快捷方式或者命令行中有效而在eclipse.ini文件中是无效的呢?这是因为我们没有遵守eclipse.ini文件的设置规则:
参数形如“项 值”这种形式,中间有空格的需要换行书写,如果值中有空格的需要用双引号包括起来。比如我们使用-vm C:\Java\jre1.6.0\bin\javaw.exe参数设置虚拟机,在eclipse.ini文件中要写成这样:
C:\Java\jre1.6.0\bin\javaw.exe
按照上面所说的,最后参数在eclipse.ini中可以写成这个样子:
-XX:PermSize=64M
-XX:MaxPermSize=128M
实际运行的结果可以通过Eclipse中“Help”-“About Eclipse SDK”窗口里面的“Configuration Details”按钮进行查看。
另外需要说明的是,Eclipse压缩包中自带的eclipse.ini文件内容是这样的:
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
其中–launcher.XXMaxPermSize(注意最前面是两个连接线)跟-XX:MaxPermSize参数的含义基本是一样的,我觉得唯一的区别就是前者是eclipse.exe启动的时候设置的参数,而后者是eclipse所使用的JVM中的参数。其实二者设置一个就可以了,所以这里可以把–launcher.XXMaxPermSize和下一行使用#注释掉。
3. 其他的启动参数。 如果你有一个双核的CPU,也许可以尝试这个参数:
-XX:+UseParallelGC
让GC可以更快的执行。(只是JDK 5里对GC新增加的参数)
可以在myelipse里选中相应的服务器比如tomcat5,展开里面的JDK子项页面,来增加服务器启动的JVM参数设置:
-XX:PermSize=128M
-XX:MaxNewSize=256m
-XX:MaxPermSize=256
_________________________________________________________________
MyEclipse内存不足之JVM内存浅谈如不美观没有进行设置的话,在使用MyEclipse的经常呈现内存不足的提醒。
  MyEclipse内存不足之JVM内存浅谈
  提醒中说的很年夜白:“MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains.”意思是说当前只有小于5%的非堆内存是余暇的。所以我们只要将这个值设置年夜一些就可以了。
  提醒中给出了设置的参数:
  -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
  MyEclipse内存不足之JVM内存浅谈的几个问题:
  1. 各个参数的寄义什么?
  2. 为什媚暌剐的机械我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机械无法启动?
  3. 为何将膳缦沔的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?
  下面我们就MyEclipse内存不足之JVM内存一一对一些概念进行回覆
  1. 各个参数的寄义什么?
  参数中-vmargs的意思是设置JVM参数,所往后面的其实都是JVM的参数了,我们首先级会一下JVM内存打点的机制,然后再诠释每个参数代表的寄义。
  ◆堆(Heap)和非堆(Non-heap)内存
  按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均年夜此处分配。堆是在 Java 虚拟机启动时建树的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM首要打点两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以体例区、JVM内部措置或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和体例数据)以及体例和机关体例的代码都在非堆内存中。
  ◆堆内存分配
  JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最年夜分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增年夜堆直到-Xmx的最年夜限制;空余堆内存年夜于70%时,JVM会削减堆直到-Xms的最小限制。是以处事器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的巨细。
  ◆非堆内存分配
  JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最年夜非堆内存的巨细,默认是物理内存的1/4。
  ◆JVM内存限制(最年夜值)
  首先JVM内存限制于现实的最年夜物理内存(废话!呵呵),假设物理内存无限年夜的话,JVM内存的最年夜值跟操作系统有很年夜的关系。简单的说就32位措置器虽然可控内存空间有4GB,可是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,系统下为2G-3G),而64bit以上的措置器就不会有限制了。
  2. 为什媚暌剐的机械我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机械无法启动?
  经由过程膳缦沔临JVM内存打点的介绍我们已经体味到JVM内存包含两种:堆内存和非堆内存,此外JVM最年夜内存首先取决于现实的物理内存和操作系统。所以说设置VM参数导致轨范无法启动首要有以下几种原因:
  1) 参数中-Xms的值年夜于-Xmx,或者-XX:PermSize的值年夜于-XX:MaxPermS
  2) -Xmx的值和-XX:MaxPermSize的总和跨越了JVM内存的最年夜限制,好比当前操作系统最年夜内存限制,或者现实的物理内存等等。说到现实物理内存这里需要声名一点的是,如不美观你的内存是1024MB,但现实系统赌暌姑到的并不成能是1024MB,因为有一部门被硬件占用了。
  3. 为何将膳缦沔的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?
  那为什么同样的参数在快捷体例或者呼吁行中有用而在eclipse.ini文件中是无效的呢?这是因为我们没有遵守eclipse.ini文件的设置轨则:
  参数形如“项 值”这种形式,中心有空格的需要换行书写,如不美观值中有空格的需要用双引号搜罗起来。好比我们使用-vm C:Javajre1.6.0binw.exe参数设置虚拟机,在eclipse.ini文件中要写成这样:
  -vm C:Javajre1.6.0binjavaw.exe
  按照膳缦沔所说的,最后参数在eclipse.ini中可以写成这个样子:
  -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
  现实运行的结不美观可以经由过程Eclipse中“Help”-“About Eclipse SDK”窗口琅缦沔的“Configuration Details”按钮进行查看。
  此外需要声名的是,Eclipse压缩包中自带的eclipse.ini文件内容是这样的:
  -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m -vmargs -Xms40m -Xmx256m
  其中–launcher.XXMaxPermSize(注重最前面是两个毗连线)跟-XX:MaxPermSize参数的寄义根基是一样的,我感受独一的区别就是前者是eclipse.exe启动的时辰设置的参数,尔后者是eclipse所使用的JVM中的参数。其实二者设置一个就可以了,所以这里可以把–launcher.XXMaxPermSize和下一行使用#注释失踪。
  MyEclipse内存不足之JVM内存方面的浅析就到这里,关于MyEclipse内存不足的问题但愿有机缘巨匠多多交流。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:239771次
积分:3178
积分:3178
排名:第4673名
原创:75篇
转载:102篇
评论:45条
(4)(1)(2)(1)(2)(7)(1)(1)(3)(3)(1)(4)(10)(2)(3)(5)(8)(7)(5)(21)(74)(7)(2)(3)

我要回帖

更多关于 系统总是提示内存不足 的文章

 

随机推荐