eclipse中报错:java.lang.OutOfMemoryError: Java heap space

问题:

在eclipse中运行java程序,去重100多万的数据,报如下错误:

java.lang.OutOfMemoryError: Java heap space

异常原因:

在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。

JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置。JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。

比如:java -Xmx3550m -Xms3550m -Xmn2g -Xss128k

-Xmx3550m:设置JVM最大可用内存为3550m。

-Xms3550m:设置JVM初始内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-Xmn2g:设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m.整个堆大小=年轻代大小 + 年老代大小.所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

解决方案:

方案一:

eclipse 启动参数里可以设置jvm大小,因为eclipse运行时也需要jvm。eclipse.ini里设置的jvm大小不是具体某个程序运行时所用jvm的大小,对全部程序有效。

那么怎么才能设置某个程序的jvm大小呢?

(当然控制台运行的话不会存在这个问题,如:java -Xms256m -Xmx1024m classname,这样就可以把当前程序的jvm大小给设定)

eclipse默认的jvm配置为:-Xms8m -Xmx128m,在内存不足时需要手动调整一下。

具体的设置方法为:

选中被运行的类,点击菜单‘run->run configurations’,选择(x)=Argument标签页下的vm arguments框里输入

-Xms64m-Xmx512m(根据你物理内存的大小调整),保存运行就ok了

方案二:

这个问题的根源是jvm虚拟机默认Heap大小是64M,可以通过设置其最大和最小值来实现。设置的方法主要有以下:

1.可以在windows 更改系统环境变量加上JAVA_OPTS=-Xms64m -Xmx512m。

2.如果用的tomcat,

1)在windows下,可以在C:\tomcat5.5.9\bin\catalina.bat 中加上:set JAVA_OPTS=-Xms64m -Xmx256m,

位置在: rem Guess CATALINA_HOME if not defined 这行的下面加合适。

2)在linux下,在{tomcat_home}/bin/catalina.sh的前面,加 set JAVA_OPTS=‘-Xms64 -Xmx512‘。

时间: 2024-07-28 14:02:51

eclipse中报错:java.lang.OutOfMemoryError: Java heap space的相关文章

Eclipse java.lang.OutOfMemoryError: Java heap space故障处理过程

最近在eclipse-jee-luna-SR2-win32开发环境(java version:1.7.0_60)下导入JEECG3.5.2开源项目过程中发现在build workspace过程中报Internal Error,查看workspace文件夹下的.metadata文件夹中的.log文件发现有下面的错误: !ENTRY org.eclipse.core.jobs 4 2 2015-08-04 18:37:10.621!MESSAGE An internal error occurred

Eclipse运行程序提示:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

问题描述: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 问题原因: 程序中对象引用过多导致堆空间不足,导致内存溢出 解决方案: (增大Java虚拟机的内存空间) 打开Eclipse,选择"Run" - "Run Configurations" - "(x)=Arguments",VM arguments栏中填写 -Xmx800m

解决sqoop报错:java.lang.OutOfMemoryError: Java heap space

报错栈: 2017-06-15 16:24:50,449 INFO [main] org.apache.sqoop.mapreduce.db.DBRecordReader: Executing query: select "CTJX60","CTJX61","CTJX62","CTJX63","CTJX64","CTJX65","CTJX66","CTJX6

排查sqoop报错:Error running child : java.lang.OutOfMemoryError: Java heap space

报错栈: 2017-06-16 19:50:51,002 INFO [main] org.apache.hadoop.mapred.MapTask: Processing split: 1=1 AND 1=1 2017-06-16 19:50:51,043 INFO [main] org.apache.sqoop.mapreduce.db.DBRecordReader: Working on split: 1=1 AND 1=1 2017-06-16 19:50:51,095 INFO [mai

Eclipse迅速执行:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

问题叙述性说明: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 问题原因: 程序中对象引用过多导致堆空间不足,导致内存溢出 解决方式: (增大Java虚拟机的内存空间) 打开Eclipse.选择"Run" - "Run Configurations" - "(x)=Arguments",VM arguments栏中填写 -Xmx80

Tomcat 启动项目报错 java.lang.OutOfMemoryError: Java heap space

近日使用myeclipse 部署web项目,启动tomcat时报错: SEVERE: Error waiting for multi-thread deployment of directories to completehostConfig.deployWar=Deploying web application archive {0} java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap s

Linux运行Java出现“Exception in thread "main" java.lang.OutOfMemoryError: Java heap space”报错

在运行如下程序时出现“Exception in thread "main" java.lang.OutOfMemoryError: Java heap space”报错: java -jar picard.jar SortVcf I=hg19.sites.vcf O=hg19.sites.sorted.vcf SEQUENCE_DICTIONARY=hg19.dict 出现这种报错说明内存不足.因此我们可以加上“-Xmx”参数 java -Xmx60g -jar picard.jar

Addnode.sh失败,日志文件报错PRKC-1025 & java.lang.OutOfMemoryError: Java heap space

环境: Linux 5.5 + RAC 11203 问题描述: 添加集群成员命令如下: $GRID_HOME/oui/bin/addNode.sh -silent "CLUSTER_NEW_NODES={X3850AR}" "CLUSTER_NEW_PRIVATE_NODE_NAMES={X3850AR-priv}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={X3850AR-vip}" 报错如下: Instantiating

解决eclipse maven install 造成JVM 内存溢出(java.lang.OutOfMemoryError: Java heap space)

maven install 报错信息: The system is out of resources.Consult the following stack trace for details.java.lang.OutOfMemoryError: Java heap space at java.util.HashMap.createEntry(HashMap.java:897) at java.util.HashMap.addEntry(HashMap.java:884) at java.ut