一直都知道可以设置jvm heap大小,一直用eclipse写/调试java程序。一直用命令行or console加参数跑程序。现象:在eclipse的配置文件eclipse.ini中设置-vmargs -Xms500m -Xmx1024m,在eclipse中直接run 或者debug某些耗内存的程序时依然出现java.lang.OutOfMemoryError: Java Heap Space错误,即通常认为的内存不足,java虚拟机内存不够用。而在命令行加这些参数则有效果,不会出错。这说明一个问题,这些参数根本没有起作用。
今天需要在eclipse里调试程序,还没到需要调试的地方就heap error了,在网上搜了很多地方,得到了最终的答案:
选中被运行的类,点击菜单‘run->run...’,选择(x)=Argument标签页下的vm arguments框里输入 -Xmx800m, 保存运行。
原来还需要对每个project单独设置,汗...
zz
有三种可能导致OutOfMemoryError。首先是,此JVM有真实的内存泄漏,导致此JVM堆在内部实现时产生了一个Bug。这极不可靠。所有JVM都经过充分的测试,并且,如果有人发现这种bug,它将绝对是最高的优先级。因此你可以非常宽心地排除这种可能性。
第二种可能的OutOfMemoryError原因只不过是,你没有为你的应用程序运行时给予足够多的可用内存。这种情况,有两种可能的方案,或者增加 JVM堆可用大小,或者减少你的应用程序所需的内存总量。提高JVM可用堆大小可以简单的使用JVM的 -Xmx 参数。假如你将此参数设置尽可能的大(可用内存极限不要超过系统物理内存,否则你的应用程序将分页并暂停),仍然有以上所提到的内存问题,那么,你需要减 少你的应用程序所可能用到内存总量。减少应用程序内存可能是简单的,你可能允许一些集合过大,例如使用了许多大的缓冲区。或者它过于复杂,要求你重新实现 一些类,乃至重新设计应用程序。
读者 Jams Stauffer 指出有些JVM(例如 sun的 JVMs),还有一个“Perm”参数用来处理JVM结构与类对象。如果你正在使用一个数量非常巨大的类集,它有可能运行在"Perm"空间之外,然后你 需要增加此空间的大小,例如,sun的JVM使用 -XX:PermSize 与 -XX:MaxPermSize 选项。
第三种导致OutOfMemoryError最为常见,无心的对象引用保持。你没有明确无误的释放对象,以致于你的堆增长再增长,直到你没有额外的空间。
处理OutOfMemoryError:
是JVM内部的BUG?不太可能。如果是,这是优先级最高的BUG(为什么还没有人发现它,而你碰到了?)。
没有足够的内存分配给实际运行的应用程序?两种选择:使用-Xmx参数增加堆的最大使用内存(或者使用-XX:MaxPermSize参数增加Perm空 间大小); 或者使用更小的集合/缓冲区/表空间/对象.....,以减少所需要的内存总量,也就是说,可以调整对象大小,重新设计与重新实现你的应用程 序。
无心的对象引用保持?找到保持这些无意引用的源对象,改变它并释放这些对象。在IBM开发者社区的文章纲要式的揭示了这样一个通用的处理过程。这个过程主 要是等到应用程序到达恒定状态--你将期望最多的新创建的对象是临时对象,并且可以被垃圾收集器收集。这常常是在应用程序所有的初始化工作完成之后。
强迫垃圾收集,获得一个堆的对象快照。
做任何工作可能正在导到无意的对象引用保持。
强迫另一次垃圾收集并获得第二次堆的对象快照。
比较这两个快照,观察从第一个快照到第二个快照哪些对象在数量上有所增加。因为你在快照之前强迫垃圾收集,剩下的将是所有被应用程序引用的对象,比较两个快照将准确的标识那些新创建的、保留在应用程序里的对象。
根据你对应用程序的认识,决定两个快照比较中,哪些对象正在无意的保持对象引用。
跟踪前导引用,找到哪些对象正在引用这些无意的保持对象,直到你找到导致此问题的源对象
启动虚拟机的时候,加上一个参数:-Xms800m -Xmx800m就好了
-Xms <size>
设置JVM初始化堆内存大小
-Xmx <size>
设置JVM最大的堆内存大小
如果是应用程序,则:java -Xms800m -Xmx800m 你的类名
如果是tomcat之类的web服务器,在这个服务器的启动文件后面加上这个参数即可。
另外设置环境变量
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
分享到:
相关推荐
【标题】:“毕业论文-基于jsp的大学生用品网上转让系统设计与实现” 这篇毕业论文主要探讨了如何设计并实现一个基于JavaServer Pages (JSP) 技术的大学生用品网上转让系统。JSP是一种用于创建动态网页的服务器端...
网上转的C字符串函数 学会这些函数,你可以发现字符串原来可以这么美 ,你可以发现字符串原来可以这么美
EXCEL在讲汉字转成拼音,可以提取汉字的首字母,也可以都转换成拼音格式,可以区分大小写等等功能的函数,编写了宏(在网上转的,奉献给大家)
网上商品订单转手系统可以对网上商品订单转手系统信息进行集中管理,可以真正避免传统管理的缺陷。网上商品订单转手系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据...
如果没有安装文件,还可以从网上下载预编译好的E-Studio.Pro.v4.42.029a软件。 安装E-Studio后,还需要进行license文件的替换操作,即将安装目录中的license文件替换为自带的license文件。这是为了确保E-Studio软件...
网上传的postgreSQL汉字转拼音的方法,是针对9.3的版本(相信你要是8.4的也搜到了但不能直接用,才来看我的),尝试了8.4的版本来做拼音处理。发现网上的《postgreSQL汉字转拼音》里面坑比较多,尝试纠正了一下,发...
6. **图片转Base64**:相反的过程,将本地图片文件读取并转换成Base64字符串,便于在网页或应用程序中内嵌图片,特别是在不需要服务器存储或传输原始图片文件的情况下。 7. **支持大于1M内容**:许多在线工具可能对...
通过网上资料查询及检验。在wiondows操作系统java开发环境中可通过ImageMagick安装包和im4java.jar把其他格式图片如pdf转换为PNG,JPEG等常用格式图片。操作其实比较简单。内附有操作步骤及图片转换文件大小的调整。
如今网上的大多数文档都是以pdf电子文档为主,有许多老师,办公族,老板等等需要上课,开会等工作需要就会在网上下载一些相关文档,但是在演示时,肯定是PPT格式比较好,所以pdf转换成ppt转换器是非常有必要的。...
在使用"headconv"时,首先你需要从网上下载这个工具,确保它是最新版本并且适合你的操作系统。下载完成后,解压文件,通常会得到一个可执行文件或源代码。如果你下载的是源代码,你可能需要使用编译器(如GCC或MinGW...
基于Springboot的网上商品订单转手系统 | java | springboot | 网上商品订单转手系统代码 | 网站 | 代码 1、技术栈:springboot,vue,ajax,maven,mysql,MyBatisPlus 2、系统的实现 用户信息 图片素材 视频素材 ...
慕课网上的jq插件transform旋转焦点图源码,按视频讲解一步步做出来的,亲测试有效无bug,而且有些个人理解加的注释,方便大家观看
现在网上很多TXT的电子书格式,不少朋友想把电子书或者工作中的TXT格式转换成PDF,可以放到其他支持PDF的设备上读取和阅读。 TXT转PDF工具是一款简洁的TXT转PDF转换软件。有了TXT转PDF工具,您可以方便的将TXT...
前阵子要把.264的文件转成AVI格式,在网上找了N多个软件,都无法实现。在CSDN上也下了多个,分倒是扣了不少,但也是无法使用。今天在另一个网站上花10个点总算找到了一个能转.264监控文件的播放器和转换器,而且转换...
跑到网上转了一圈都没找到一个专门的情侣头像壁纸站,只在知乎某个答案下找到一些情侣头像, 而情侣壁纸就更难找了,找一对的找了很久没找着,奈何没办法只有自己做一个小站,收集了几千张头像和壁纸给自己用。 这...
之前收集各个资源的转化,终于找到stl格式转换成pcd格式的数据代码,这个网上是没有现成的,我们费了好大的功夫才解决了这个格式转换问题,很珍贵的资源,分享一下!希望对你们有帮助。
转换后的图片发布到网上,可以很好地防止被复制、编辑。 霄鹞Word文档转图片助手支持转换到JPG/PNG/BMP/GIF等常见图片格式,转换后的文字、图表清晰不变形。同时软件批量转换,只要您将要转换的文件加入到转换列表...
直接打开编译,不是网上转的,是自己写的,里面有注释 贝塞尔曲线的t系数是0.5 C++写贝塞尔曲线,可以在任意平台编译,可移植的贝塞尔曲线 贝塞尔曲线例子 Bezier demo bezier curve writen by qt5.8 qt5.8 project...
该主题是本人的一个头像壁纸站点的主题,这个站最初是女朋友要让和她用情侣头像和壁纸,跑到网上转了一圈都没找到一个专门的情侣头像壁纸站,只在知乎某个答案下找到一些情侣头像,而情侣壁纸就更难找了,找一对的找...