• 关于 java 内存溢出 的搜索结果

回答

Java内存泄漏就是没有及时清理内存垃圾,导致系统无法再给你提供内存资源(内存资源耗尽); 而Java内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。 内存溢出,这个好理解,说明存储空间不够大。就像倒水倒多了,从杯子上面溢出了来了一样。 内存泄漏,原理是,使用过的内存空间没有被及时释放,长时间占用内存,最终导致内存空间不足,而出现内存溢出。

星尘linger 2020-04-13 09:06:52 0 浏览量 回答数 0

问题

Java内存溢出与内存泄漏区别在哪?

小天使爱美 2020-04-12 21:58:08 4 浏览量 回答数 1

问题

java内存溢出 是什么异常

云计算小粉 2019-12-01 19:52:16 1148 浏览量 回答数 1

新手开公司,教你化繁为简

开公司到底有没有那么难,传统的手续繁琐,线下跑断腿,场地搞不定等问题,通过阿里云”云上公司注册“解决你的烦恼。

回答

1. Java虚拟机栈溢出: StackOverflowError 2. 本地方法栈溢出: OutOfMemoryError 3. java堆和方法区溢出: OutOfMemoryError 4. 运行时常量池和直接内存溢出: OutOfMemoryError

207471014295778924 2019-12-02 00:58:47 0 浏览量 回答数 0

问题

java虚拟机内存溢出? 400 报错

爱吃鱼的程序员 2020-06-01 10:38:12 0 浏览量 回答数 1

回答

内存溢出。这个有多种原因,可能是代码问题,也可能是jvm设置太小,windows: catalina.bat linux :catalina.sh还有`at java.util.Arrays.copyOf(Arrays.java:2882)at java.lang.StringBuffer.append(StringBuffer.java:219)`一看就是和字符串相关的操作导致的,大段的字符串拷贝和arraycopy导致内存溢出,再一看是at com.htsoft.core.web.listener.StartupListener.contextInitialized(StartupListener.java:22)这段用户代码导致的

落地花开啦 2019-12-02 02:25:01 0 浏览量 回答数 0

问题

java 连接sde内存溢出 arcgis

蛮大人123 2019-12-01 19:57:12 1865 浏览量 回答数 1

问题

[@古散][¥20]我的Java应用在运行时经常会出现内存溢出的情况,有没有什么要的诊断、追踪和处理方法?

杨过二 2019-12-01 20:24:46 918 浏览量 回答数 2

问题

JVM 发生 OOM 的 8 种原因、及解决办法

游客pklijor6gytpx 2020-01-14 15:03:16 141 浏览量 回答数 1

问题

云服务器只要一开java就会存在过多没有使用的内存!急!求助!大触进来

bai_bo 2019-12-01 21:01:37 4877 浏览量 回答数 1

问题

java.lang.OutOfMemoryError: PermGen spac?400报错

爱吃鱼的程序员 2020-06-04 15:56:39 1 浏览量 回答数 1

问题

java 调用kettle 文件方式不是资源库,内存溢出。

牧小沐 2019-12-01 19:23:29 1812 浏览量 回答数 0

回答

编写java程序最为方便的地方就是我们不需要管理内存的分配和释放,一切由jvm来进行处理,当java对象不再被应用时,等到堆内存不够用时,jvm会进行垃圾回收,清除这些对象占用的堆内存空间,如果对象一直被应用,jvm无法对其进行回收,创建新的对象时,无法从Heap中获取足够的内存分配给对象,这时候就会导致内存溢出。而出现内存泄露的地方,一般是不断的往容器中存放对象,而容器没有相应的大小限制或清除机制。容易导致内存溢出。 当服务器应用占用了过多内存的时候,如何快速定位问题呢?现在,Eclipse MAT的出现使这个问题变得非常简单。EclipseMAT是著名的SAP公司贡献的一个工具,可以在Eclipse网站下载到它,完全免费的。 要定位问题,首先你需要获取服务器jvm某刻内存快照。jdk自带的jmap可以获取内存某一时刻的快照,导出为dmp文件后,就可以用Eclipse MAT来分析了,找出是那个对象使用内存过多。

小勿悔 2019-12-02 01:03:07 0 浏览量 回答数 0

问题

内存溢出java.lang.OutOfMemoryError: PermGen space

落地花开啦 2019-12-01 19:34:23 1029 浏览量 回答数 1

问题

tomcat内存溢出

一三一四 2019-12-01 21:02:24 7155 浏览量 回答数 3

回答

堆设置太大了吧 看看JVM设置 java.lang.OutOfMemoryError:Javaheapspace com.htsoft.core.web.listener.StartupListener.contextInitialized(StartupListener.java:22) 监听器读数据爆了 atjava.util.Arrays.copyOf(Arrays.java:2882)atjava.lang.StringBuffer.append(StringBuffer.java:219) 一看就是和字符串相关的操作导致的,大段的字符串拷贝和arraycopy导致内存溢出,再一看是atcom.htsoft.core.web.listener.StartupListener.contextInitialized(StartupListener.java:22)这段用户代码导致的 不是很明显吗?内存溢出。 这个有多种原因,可能是代码问题,也可能是jvm设置太小, windows:catalina.bat  linux:catalina.sh

爱吃鱼的程序员 2020-06-22 18:45:15 0 浏览量 回答数 0

回答

问题发生后,第一时间是快速保留问题现场供后面排查定位,然后尽快恢复服务。保留现场的具体操作:打印堆栈信息,命令行:jstack -l 'java进程PID'打印内存镜像,命令行:jmap -dump:format=b,file=hprof 'java进程PID'生成core文件,命令行:gcore 'java进程PID'保留gc日志文件保留业务日志文件查看JAVA堆内存运行分配:命令行:jstat -gcutil 'java进程PID' 1000完成以上操作后,尽快重启JAVA进程或回滚,恢复服务。当应用系统运行缓慢,页面加载时间变长,后台长时间无影响时,都可以参考以下归类的解决方法。绝大部分的JAVA程序运行时异常都是Full GC、OOM(java.lang.OutOfMemoryError)、线程过多。主要分这么几大类:持续发生Full GC,但是系统不抛出OOM错误堆内存溢出:java.lang.OutOfMemoryError:Java heap space线程过多:java.lang.OutOfMemoryError:unable to create new native threadJAVA进程退出CPU占用过高通常来说,可以用一些常用的命令行来打印堆栈、内存使用分配、打印内存镜像文件来分析,比如jstack、jstat、jmap等。但是某些时刻,还是需要引入更高阶的代码级分析工具(比如btrace)才能定位到具体原因。针对每一种问题,我会依据具体的case来详细说明解决方式。

昊蓝 2019-12-02 01:47:07 0 浏览量 回答数 0

问题

tomcat7.0.42设置的内存已经很大了,但是还报内存溢出,为什么?

落地花开啦 2019-12-01 19:40:50 1043 浏览量 回答数 1

问题

permgen space溢出设置内存无效 - java报错

montos 2020-05-31 15:07:43 0 浏览量 回答数 1

回答

只要是java,就可能出现oom的。heap溢出是最常见的。这里没有指出具体跑的是hive、hadoop mr还是spark。可以具体分析是什么原因引起的溢出,常见的原因有:1、数据倾斜 解决办法是增加并发,或者单独为key增加随机数,后再聚合。2、spark则可能原因是cache过多,可以换多层换成或者增加内层。有时候 给map或者reduce内存过小也可能会出现内存溢出,一般来讲大于1024m为宜

封神 2019-12-02 03:19:59 0 浏览量 回答数 0

回答

第一种OutOfMemoryError: PermGen space发生这种问题的原意是程序中使用了大量的jar或class,使java虚拟机装载类的空间不够,与Permanent Generation space有关。解决这类问题有以下两种办法:增加java虚拟机中的XX:PermSize和XX:MaxPermSize参数的大小,其中XX:PermSize是初始永久保存区域大小,XX:MaxPermSize是最大永久保存区域大小。如针对tomcat6.0,在catalina.sh 或catalina.bat文件中一系列环境变量名说明结束处(大约在70行左右) 增加一行: JAVA_OPTS=" -XX:PermSize=64M -XX:MaxPermSize=128m" 如果是windows服务器还可以在系统环境变量中设置。感觉用tomcat发布sprint+struts+hibernate架构的程序时很容易发生这种内存溢出错误。使用上述方法,我成功解决了部署ssh项目的tomcat服务器经常宕机的问题。清理应用程序中web-inf/lib下的jar,如果tomcat部署了多个应用,很多应用都使用了相同的jar,可以将共同的jar移到tomcat共同的lib下,减少类的重复加载。这种方法是网上部分人推荐的,我没试过,但感觉减少不了太大的空间,最靠谱的还是第一种方法。第二种OutOfMemoryError: Java heap space发生这种问题的原因是java虚拟机创建的对象太多,在进行垃圾回收之间,虚拟机分配的到堆内存空间已经用满了,与Heap space有关。解决这类问题有两种思路:检查程序,看是否有死循环或不必要地重复创建大量对象。找到原因后,修改程序和算法。 我以前写一个使用K-Means文本聚类算法对几万条文本记录(每条记录的特征向量大约10来个)进行文本聚类时,由于程序细节上有问题,就导致了Java heap space的内存溢出问题,后来通过修改程序得到了解决。增加Java虚拟机中Xms(初始堆大小)和Xmx(最大堆大小)参数的大小。如:set JAVA_OPTS= -Xms256m -Xmx1024m第三种OutOfMemoryError:unable to create new native thread在java应用中,有时候会出现这样的错误:OutOfMemoryError: unable to create new native thread.这种怪事是因为JVM已经被系统分配了大量的内存(比如1.5G),并且它至少要占用可用内存的一半。有人发现,在线程个数很多的情况下,你分配给JVM的内存越多,那么,上述错误发生的可能性就越大。那么是什么原因造成这种问题呢?每一个32位的进程最多可以使用2G的可用内存,因为另外2G被操作系统保留。这里假设使用1.5G给JVM,那么还余下500M可用内存。这500M内存中的一部分必须用于系统dll的加载,那么真正剩下的也许只有400M,现在关键的地方出现了:当你使用Java创建一个线程,在JVM的内存里也会创建一个Thread对象,但是同时也会在操作系统里创建一个真正的物理线程(参考JVM规范),操作系统会在余下的400兆内存里创建这个物理线程,而不是在JVM的1500M的内存堆里创建。在jdk1.4里头,默认的栈大小是256KB,但是在jdk1.5里头,默认的栈大小为1M每线程,因此,在余下400M的可用内存里边我们最多也只能创建400个可用线程。这样结论就出来了,要想创建更多的线程,你必须减少分配给JVM的最大内存。还有一种做法是让JVM宿主在你的JNI代码里边。给出一个有关能够创建线程的最大个数的估算公式:(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads对于jdk1.5而言,假设操作系统保留120M内存:1.5GB JVM: (2GB-1.5Gb-120MB)/(1MB) = ~380 threads1.0GB JVM: (2GB-1.0Gb-120MB)/(1MB) = ~880 threads对于栈大小为256KB的jdk1.4而言,1.5GB allocated to JVM: ~1520 threads1.0GB allocated to JVM: ~3520 threads 对于这个异常我们首先需要判断下,发生内存溢出时进程中到底都有什么样的线程,这些线程是否是应该存在的,是否可以通过优化来降低线程数; 另外一方面默认情况下java为每个线程分配的栈内存大小是1M,通常情况下,这1M的栈内存空间是足足够用了,因为在通常在栈上存放的只是基础类型的数据或者对象的引用,这些东西都不会占据太大的内存, 我们可以通过调整jvm参数,降低为每个线程分配的栈内存大小来解决问题,例如在jvm参数中添加-Xss128k将线程栈内存大小设置为128k。

蛮大人123 2019-12-02 02:27:59 0 浏览量 回答数 0

问题

哪位大侠遇到过java虚拟机中线程这样死掉的现象,原因是什么呀

长安归故里. 2020-01-31 14:09:41 0 浏览量 回答数 1

问题

tomcat PermGen space 内存溢出问题

落地花开啦 2019-12-01 19:34:35 1164 浏览量 回答数 1

回答

设置Tomcat启动的初始内存其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。 可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置 三、实例,以下给出1G内存环境下java jvm 的参数设置参考: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true " JAVA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX: NewSize=192m -XX:MaxNewSize=384m" CATALINA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:NewSize=192m -XX:MaxNewSize=384m" Linux: 在/usr/local/apache-tomcat-5.5.23/bin 目录下的catalina.sh添加: JAVA_OPTS='-Xms512m -Xmx1024m'要加“m”说明是MB,否则就是KB了,在启动tomcat时会 报内存不足。 -Xms:初始值-Xmx:最大值-Xmn:最小值 Windows 在catalina.bat最前面加入set JAVA_OPTS=-Xms128m -Xmx350m 如果用startup.bat启动tomcat,OK设置生效.够成功的分配200M内存. 但是如果不是执行startup.bat启动tomcat而是利用windows的系统服务启动tomcat服务,上面的设置就不生效了,就是说set JAVA_OPTS=-Xms128m -Xmx350m 没起作用.上面分配200M内存就OOM了.. windows服务执行的是bintomcat.exe.他读取注册表中的值,而不是catalina.bat的设置. 解决办法: 修改注册表HKEY_LOCAL_MACHINESOFTWAREApache Software FoundationTomcat Service ManagerTomcat5ParametersJavaOptions 原值为-Dcatalina.home="C:ApacheGroupTomcat 5.0"-Djava.endorsed.dirs="C:ApacheGroupTomcat 5.0commonendorsed"-Xrs加入 -Xms300m -Xmx350m 重起tomcat服务,设置生效 答案2Tomcat 的JVM 内存溢出问题的解决关键字: tomcat 的jvm 内存溢出问题的解决 最近在熟悉一个开发了有几年的项目,需要把数据库从mysql移植到oracle,首先把jdbc的连接指向mysql,打包放到tomcat里面,可以跑起来,没有问题,可是当把jdbc连接指向oracle的时候,tomcat就连续抛java.lang.OutOfMemoryError的错误,上网google了一下,了解了一下tomcat的运行机制,也解决了问题,share出来,以备查。 1、首先是:java.lang.OutOfMemoryError: Java heap space 解释: Heap size 设置 JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。 提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。 提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。 解决方法: 手动设置Heap size 修改TOMCAT_HOME/bin/catalina.bat,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: Java代码 set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m 或修改catalina.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m" 2、其次是:java.lang.OutOfMemoryError: PermGen space 原因: 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)那么就会产生此错误信息了。 解决方法: 1. 手动设置MaxPermSize大小 修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在Java代码 “echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m “echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m catalina.sh下为: Java代码 JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m" JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m" 另外看到了另外一个帖子,觉得挺好,摘抄如下: 分析java.lang.OutOfMemoryError: PermGen space 发现很多人把问题归因于: spring,hibernate,tomcat,因为他们动态产生类,导致JVM中的permanent heap溢出 。然后解决方法众说纷纭,有人说升级 tomcat版本到最新甚至干脆不用tomcat。还有人怀疑spring的问题,在spring论坛上讨论很激烈,因为spring在AOP时使用CBLIB会动态产生很多类。 但问题是为什么这些王牌的开源会出现同一个问题呢,那么是不是更基础的原因呢?tomcat在Q&A很隐晦的回答了这一点,我们知道这个问题,但这个问题是由一个更基础的问题产生。 于是有人对更基础的JVM做了检查,发现了问题的关键。原来SUN 的JVM把内存分了不同的区,其中一个就是permenter区用来存放用得非常多的类和类描述。本来SUN设计的时候认为这个区域在JVM启动的时候就固定了,但他没有想到现在动态会用得这么广泛。而且这个区域有特殊的垃圾收回机制,现在的问题是动态加载类到这个区域后,gc根本没办法回收! 对于以上两个问题,我的处理是: 在catalina.bat的第一行增加: Java代码 :set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m 在catalina.sh的第一行增加: Java代码 :JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

a123456678 2019-12-02 02:02:45 0 浏览量 回答数 0

回答

错误原因: java.lang.StackOverflowError 栈内存溢出 栈溢出 产生于递归调用,循环遍历是不会的,但是循环方法里面产生递归调用, 也会发生栈溢出。 解决办法:设置线程最大调用深度 -Xss5m 设置最大调用深度

星尘linger 2020-04-12 21:58:02 0 浏览量 回答数 0

问题

[@talishboy][¥20]1、jvm是可以设置内存上线大小的但是在现实情况下java的内存溢出有大致两类,堆内存区和PermGen区当我设置PermGen的上线大小例如1g感觉已经不少了,可是容器依旧OutOfMemoryError,所以有什么好的意见可以调优调试,或者精准的跟踪问题?2、session的问题,使用spring-security 当session失效的情况下(服务是正常的)用户在再次login之后重复跳回login导致请求被重新拦截了,请问如何排查?

李博 bluemind 2019-12-01 19:25:02 480 浏览量 回答数 1

回答

错误原因: java.lang.OutOfMemoryError: Java heap space 堆内存溢出 解决办法:设置堆内存大小 // -Xms1m -Xmx10m -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError // -Xms1m -Xmx10m -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError

星尘linger 2020-04-12 21:57:11 0 浏览量 回答数 0

问题

JAVA读取图片问题:报错

kun坤 2020-06-06 23:20:27 0 浏览量 回答数 1

问题

java 程序内存占用的问题

小旋风柴进 2019-12-01 19:41:56 1051 浏览量 回答数 1

问题

最近在项目开发过程中通过Db.find或者Db.pro.find查询会出现内存溢出?报错

爱吃鱼的程序员 2020-06-14 17:11:54 0 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播