求助eclipse报错,eclipse编译内存溢出出问题

10:00 提问
eclipse报错内存溢出,但是才960bytes
按赞数排序
是不是前面内存泄漏太多了,造成内存不足
Window-Preference-Installed JREs里面参数输入Xms256m -Xmx1536m如果你内存是2G以上的话
如果内存不足,再申请内存哪怕很小也会报错。好比压死骆驼的最后一根稻草。
加大你的内存配置,提升你的设备内存,检查你的程序代码。
其他相似问题8777人阅读
J2EE(28)
Java(28)
eclipse内存溢出错误:An out of memory error has occurred.Consult the "Running Eclipse" section of read me file
for information on preventing this kind of error in the future.
解决方法:调一下内存,myeclipse.ini里面把-Xmx -XX:PermSize -XX:MaxPermSize 适当调大些。如果是eclipse工具,则是在eclipse.ini中改。
-showsplash org.eclipse.platform--launcher.XXMaxPermSize 256M-vmargs-Dosgi.requiredJavaVersion=1.5-Xms256m-Xmx512m
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:642843次
积分:6167
积分:6167
排名:第2996名
原创:106篇
转载:32篇
评论:97条
(1)(2)(2)(3)(1)(11)(1)(3)(1)(1)(4)(2)(1)(1)(1)(1)(1)(2)(2)(1)(2)(1)(7)(3)(38)(1)(1)(3)(2)(6)(4)(24)(3)(1)学友 的BLOG
用户名:学友
文章数:68
访问量:9349
注册日期:
阅读量:5863
阅读量:12276
阅读量:361767
阅读量:1057439
51CTO推荐博文
今天在做项目时不知怎么搞的Eclipse出现了Failed to create the java Virtual Machine错误,什么jvm内存溢出,我猜肯定是eclipse.ini配置文件出了问题,于是到网上一搜果真是改这个配置文件,但是网上也没怎么说明白,于是自己就瞎改了翻:
原配置如下:
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
<span style="color: #ffm
-Dosgi.requiredJavaVersion=1.5
其实报错误的关键就在于划线部分,只要这两个值的加和小于某个值时eclipse就能启动起来,至于这某个值应当就是你的电脑除去硬件及其它软件所占的内存剩余下来的虚拟内存。当然你也可以把那几个值都删掉也什么影响这个就是我个人的总结,特此说明代表个人观点,如有错误请指出说明。谢谢本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)java 内存溢出 栈溢出的原因与排查方法 - 推酷
java 内存溢出 栈溢出的原因与排查方法
java 内存溢出 栈溢出的原因与排查方法
| 发表时间: 09:52 | 作者:ilovejoe
&1、 内存溢出的原因是什么?
内存溢出是由于没被引用的对象(垃圾)过多造成JVM没有及时回收,造成的内存溢出。如果出现这种现象可行代码排查:
一)是否App中的类中和引用变量过多使用了Static修饰 如public staitc Student s;在类中的属性中使用 static修饰的最好只用基本类型或字符串。如public static int i = 0; //public static S
二)是否App中使用了大量的递归或无限递归(递归中用到了大量的建新的对象)
三)是否App中使用了大量循环或死循环(循环中用到了大量的新建的对象)
四)检查App中是否使用了向数据库查询所有记录的方法。即一次性全部查询的方法,如果数据量超过10万多条了,就可能会造成内存溢出。所以在查询时应采用“分页查询”。
五)检查是否有数组,List,Map中存放的是对象的引用而不是对象,因为这些引用会让对应的对象不能被释放。会大量存储在内存中。
六)检查是否使用了“非字面量字符串进行+”的操作。因为String类的内容是不可变的,每次运行&+&就会产生新的对象,如果过多会造成新String对象过多,从而导致JVM没有及时回收而出现内存溢出。
如String s1 = &My name&;
String s2 = &is&;
String s3 = &xuwei&;
String str = s1 + s2 + s3 +.........;这是会容易造成内存溢出的
但是String str =&&&My name& + & is & + & xuwei& + & nice & + & to & + & meet you&; //但是这种就不会造成内存溢出。因为这是”字面量字符串“,在运行&+&时就会在编译期间运行好。不会按照JVM来执行的。
在使用String,StringBuffer,StringBuilder时,如果是字面量字符串进行&+&时,应选用String性能更好;如果是String类进行&+&时,在不考虑线程安全时,应选用StringBuilder性能更好。
七)使用 DDMS工具进行查找内存溢出的大概位置
2、栈溢出的原因
一)、是否有递归调用
二)、是否有大量循环或死循环
三)、全局变量是否过多
四)、 数组、List、map数据是否过大
五)使用DDMS工具进行查找大概出现栈溢出的位置
相关 [java 内存 溢出] 推荐:
- - 互联网 - ITeye博客
1、 内存溢出的原因是什么. & & &&内存溢出是由于没被引用的对象(垃圾)过多造成JVM没有及时回收,造成的内存溢出. 如果出现这种现象可行代码排查:. & & 一)是否App中的类中和引用变量过多使用了Static修饰 如public staitc Student s;在类中的属性中使用 static修饰的最好只用基本类型或字符串. 如public static int i = 0; //public static S. & 二)是否App中使用了大量的递归或无限递归(递归中用到了大量的建新的对象). & 三)是否App中使用了大量循环或死循环(循环中用到了大量的新建的对象).
- - Java - 编程语言 - ITeye博客
相信通过写java程序讨生活的人对内存溢出并不陌生,如下文字的出现更是让人恼火:. 尤其当应用服务器(Java容器)出现上述情况更是让人有一种天塌下来的感觉. && 好的编码实践可能会大大降低内存溢出的产生. && 本文并不是写如何规避内存溢出,但是我还是要介绍一下如何能够尽量规避内存溢出:. 找几个资深程序猿(或者整个项目组讨论后)写一个Java编码规范,让项目组成员尽量遵守. 一目了然的代码更容易定位问题,当然也更能让人写出好的代码. 单元测试要覆盖所有分支与边界条件. 有句老话说常在河边站哪有不湿鞋(学名墨菲定律). 代码写完了,找资深程序猿扫扫代码没有坏处. 有条件的项目组要充分利用测试人员的能动性.
- - 研发管理 - ITeye博客
垃圾回收是Java程序员了解最少的一部分. 他们认为Java虚拟机接管了垃圾回收,因此没必要去担心内存的申请,分配等问题. 但是随着应用越来越复杂,垃圾回收也越来越复杂,一旦垃圾回收变的复杂,应用的性能将会大打折扣. 所以,Java程序员了解垃圾回收的机制并且知道怎样解决“内存溢出”问题会有很大的益处. 在Java中,有两个非常普遍的内存溢出问题. 一个是堆内存溢出,另一个是持久代内存溢出. & & & &Java对象是java 类的实例. 每当创建一个Java对象时,Java虚拟机都会创建该对象的内部引用并且保存在堆中. 如果一个类是第一次访问,那么它必须通过Java虚拟机加载进来.
- - Java - 编程语言 - ITeye博客
前段时间基于OpenJms部署了一个消息中间件服务器,通过主题订阅模式在各个消息节点之间传递信息,但是某个类型的消息节点长时间运行后出现了内存溢出问题,最后使用JProfiler的基本线程监测功能找到问题所在,并且进行解决. Java&版本&java&version&&1.7.0_40&. JProfiler&版本&v8.0.7. 1、&打开JProfiler,选择New&Session. 2、&点击Attach,按ok,以便从本地JVM中选择正在运行的java程序. 3、&选择session,这里可以看到本机运行的所有java程序,我的应用ID为844,因此,选择844,点击ok.
- - CSDN博客移动开发推荐文章
众所周知,每个Android应用程序在运行时都有一定的内存限制,限制大小一般为16MB或24MB(视平台而定). 因此在开发应用时需要特别关注自身的内存使用量,而一般最耗内存量的资源,一般是图片、音频文件、视频文件等多媒体资源;由于Android系统对音频、视频等资源做了边解析便播放的处理,使用时并不会把整个文件加载到内存中,一般不会出现内存溢出(以下简称OOM)的错误,因此它们的内存消耗问题暂不在本文的讨论范围. 本文重点讨论的是图片的内存消耗问题,如果你要开发的是一款图片浏览器应用,例如像Android系统自带的Gallery那样的应用,这个问题将变得尤为突出;如果你开发的是目前的购物客户端,有时候处理不当也会碰到这种问题.
- d0ngd0ng - 蓝色时分
最近线上运行的hbase发现分配了16g内存,但是实际使用了22g,堆外内存达到6g. 堆外内存用一般的工具很难查看,可以通过google-perftools来跟踪:. &&& 它的原理是在java应用程序运行时,当调用malloc时换用它的libtcmalloc.so,这样就能做一些统计了. 下载http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-beta.tar.gz,sudo make install. 下载http://google-/files/google-perftools-1.8.1.tar.gz, configure --prefix=/home/user/sudo make install.
- - 博客园_首页
在前面的几篇博文中,我们一起简单的了解jvm的基本知识,例如jvm对字符串的处理等等,或许大家看完后就把这当成一条准则来记住了,但是一些比较好奇的朋友有没有想过,这是为什么呢. 下面就让我们开始一步一步的深入学习. 在这篇博文中呢,我打算主要就讲Java内存区域与内存溢出异常吧. 1.Java虚拟机运行时数据区. 在前面的几篇博文中,我们只是简单的把内存区域分为了堆和栈,但其实,这种分法是十分粗糙的,jvm在实际运行的时候,内存区域的划分绝对不是那么简简单单的就两块,我们一起看下面这个图就知道了. 从上图我们知道了,JVM虚拟机运行时数据区主要划分为:方法区、虚拟机栈、本地方法栈、堆、程序计数器.
- - 企业架构 - ITeye博客
package com.chinaso. import java.lang.reflect.F /** * @author piaohailin * @date
*/ public class Server {. //2 虚拟机栈和本地方法栈溢出. 已有 0 人发表留言,猛击-&& 这里&&-参与讨论. —软件人才免语言低担保 赴美带薪读研.
- - 开涛的博客
请先前往《 Spring内存溢出问题》查看问题,大体问题就是突然间内存飙升,且CPU使用率非常高. 通过内存dump分析发现内存中某个key会有几百万个,而且观察这些key会发现有时候是org.springframework.web.servlet.DispatcherServlet.LOCALE_RESOLVER,有时候又变成org.springframework.web.servlet.DispatcherServlet.THEME_RESOLVER,每次可能不一样. 这个key是springmvc放到request中的属性key,而且一个key不可能放到request多次啊,因为request attributes本身通过HashMap存储,且线程不安全;造成这个问题的能想到的就是线程绑定变量泄露/并发操作request.
在平时开发、测试过程中、甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序有严重的问题. 我们需要找造成OutOfMemoryError原因. 1、内存泄露,对象已经死了,无法通过垃圾收集器进行自动回收,通过找出泄露的代码位置和原因,才好确定解决方案;. 2、内存溢出,内存中的对象都还必须存活着,这说明Java堆分配空间不足,检查堆设置大小(-Xmx与-Xms),检查代码是否存在对象生命周期太长、持有状态时间过长的情况. 以上是处理Java堆问题的思路,具体是怎么进行分析,这里介绍的是使用Eclipse Memory Analyzer tool(MAT)工具分析的过程.
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致下次自动登录
现在的位置:
& 综合 & 正文
Eclipse经常出现OutOfMemory错误,如何解决
今天有个同事问我一个问题,他的Eclipse经常出现OutOfMemoryError,从原理上说,有两种原因会导致客户机的Eclipse内存溢出:
1.Ecplise因为是ide,涉及大量的class的重新build,每次build,classloader会重新加载此class,而老的
class,没有被卸载,同时JVM不会垃圾回收此class(据说是因为classloader本身有内存泄露,也许是classloader仍然对改
class进行了引用,因此,这类class不会被unload),因此,可以设置较大的PermSize,因为Class是分配在Perm
space里面的。但是这种办法只能延长OutOfMemory的时间,因为class的重新装载迟早会造成永久代的内存溢出,这种情况在产品线上应该不
会出现,一般产品线上重新部署时,都要求重启JVM的,所以问题不大。
2.因为eclipse经常跟本地的其它应用程序一起运行,OS的内存会把分配给其它应用程序,为了避免应用程序抢走JVM的内存,通常我们在设置
堆大小时,有初始化堆的大小和最大堆的大小,在JVM启动时,JVM会向OS申请初始化堆大小的内存空间,只有当堆内存不足时,JVM才会想OS请求内存
直到Xmx为止,当内存被其它应用程序占用时,JVM往往申请不到内存,这很容易堆内存溢出,因为,此时堆大小已经不能再扩展了。因此,所以把
xmx=xmn设置成一样大,可以避免内存被其它进程抢走。
综上所述,如果eclipse OutOfMemoryError,推荐使用下列配置(具体大小可以视PC的配置,笔者的机器配置为2G内存,双核):
#-showsplash
#org.eclipse.platform
#-framework
#plugins/org.eclipse.osgi_3.4.3.R34x_v0.jar
-XX:PermSize=150M
-XX:MaxPermSize=150M
这个文件在eclipse安装目录下eclipse.ini文件。
&&&&推荐文章:
【上篇】【下篇】

我要回帖

更多关于 eclipse编译内存溢出 的文章

 

随机推荐