如何解决java.lang.OutOfMemoryError?

 我来答
H爱不绝迹
推荐于2019-10-10 · TA获得超过7.6万个赞
知道大有可为答主
回答量:60
采纳率:85%
帮助的人:3.9万
展开全部

常见的有以下几种:

1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;

2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;

3.代码中存在死循环或循环产生过多重复的对象实体;

4.使用的第三方软件中的BUG;

5.启动参数内存值设定的过小;

解决方法:

JVM申请的heap会占用相同大小的地址空间(address space)。在Windows 32位操作系统中,分配给每个程序的地址空间只有2GB(当然也有3GB的开关)。而每个不同的JVM的堆和其创建的进程栈都依赖于同一个进程地址空间,所以这也是此消彼长的原因。有方法可以提高创建线程的数量: 减少单个线程栈的大小,在JVM启动中使用-Xss参数。

叽叽歪歪你是谁
2017-12-31 · TA获得超过1.3万个赞
知道小有建树答主
回答量:112
采纳率:50%
帮助的人:5.5万
展开全部
  1. PermGen space是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。主要原因是class文件太多或者lib下的jar文件太多。

  2. 因为,我们只需要手动改变tomcat启动时的MaxPermSize和PermSize

  3. 在tomcat的bin目录下找到catalina.sh

  4. 找到echo "Using CATALINA_BASE:   $CATALINA_BASE"这一行

  5. 在上面加入;JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=256m"
    调节里面的参数。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式