Tomcat内存释放不了、Tomcat内存溢出原因

公司的tomcat又挂掉了,之前挂了一次.出现以下错误,后来把tomcat的内存增大到1024  
严重: Exception initializing page context  java.lang.OutOfMemoryError: Java heap space  
   
  在tomcat\bin\catalina.bat的set CURRENT_DIR=%cd% 前面添加  
      set JAVA_OPTS =-Xms512m -Xmx1024m  
      意思:设置最小虚拟内存512,最大1024.  
  今天tomcat又挂了,一查之下,发现内存只升不降,久而久之,系统就挂死了.另外你可以用java的一个管理工具查看内存使用情况.在jdk1.6.0\bin\jconsole.exe.  
   
   总结下内存只升不降的几个原因:  

   1.在java中虽然有垃圾回收器,但是对rs等通过jdbc访问数据库的所产生的垃圾,它并不回收!  
    2.是否是循环套接层数太多导致资源得不到释放,或者存在死循环,后者的可能性恨大。  

     解决方法是让tomcat自己管理内存,在startup.bat的@echo off下面添加以下代码:  

set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_HOME%\conf\logging.properties"  



     然后再启动startup.bat,tomcat就会自己管理内存了.  
      
     另外事实上,这是一个优化。因为对于操作系统,请求内存的系统调用会占用大量的cpu时间,所以频繁的请求、释放内存将会导致性能的严重下降。所以对于 jvm,最好的方式就是尽量多占用内存作为heap,少释放甚至不释放空闲的heap给操作系统以减少消耗在内存请求、释放操作上的cpu时间。  
    

改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m 

---------------------------------------------------------------------------------------------------------------------------------

先试试这个:
-Xms64m 
-Xmx256m 
-XX:PermSize=128M 
-XX:MaxNewSize=256m 
-XX:MaxPermSize=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" 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[LeetCode] 414.第三大的数(Java)

[LeetCode] 414.第三大的数(Java) 1.题目描述 给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。 示例 1:输入:[3, 2, 1] 输出:1 解释:第三大的数是 1 。 示例 2&#xff…

win10 4k分屏 eclipse等工具打开后按钮图标大小问题解决方案

1、打开显示设置 2、打开eclipse属性、直接上图:

python用海伦公式求面积_Python:平面直角坐标系下用三点求所构三角形面积

我使用了一种特殊方式,计算平面直角坐标系下三点所构成(如果可行的话)的三角形的面积。这个方法,不同於常见的海伦公式。设此三点坐标分别为:算出最大最小的 与 ,并根据三点坐标,虚构出一个矩形…

[LeetCode] 628. 三个数的最大乘积(Java)

[LeetCode] 628. 三个数的最大乘积(Java) 1.题目描述 给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。 示例 1:输入:nums [1,2,3] 输出:6 示例 2:输入:nums …

[INS-30131] 执行安装程序验证所需的初始设置失败。

安装oracle11g或12C碰到“无法访问临时位置”的问题,详细信息如下: [INS-30131]执行安装程序验证所需的初始设置失败(原因:无法访问临时位置) 操作 - 请确保当前用户具有访问临时位置所需的权限。 解决方案1&#xff…

iview select 怎么清空_iView各种组件清空重置

表单注意事项: prop属性要和表单对象中的属性名一致html:重置js:data () {return {formFilter: {},}},methods: {handleReset (name) {// 或者手动将各个属性置空this.$refs[name].resetFields()}}穿梭框html: 首先通过ref获取到穿梭框ref"refTransfer"&g…

Navicat连接Mysql 8.0.16报错:Client does not support authentication protocol requested by server?

解决方法的命令如下: 切换到mysql安装目录下 :C:\Program Files\MySQL\MySQL Server 8.0\bin 登录进去执行以下命令 use mysql; alter user rootlocalhost identified with mysql_native_password by ********; flush privileges;

[LeetCode] 645. 错误的集合(Java)

[LeetCode] 645. 错误的集合(Java) 1.题目描述 集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。 给定一个数组 nums 代…

android 结束if循环_(第五讲)if 分支语句和 while 循环

本文首发于微信公众号「烽哥带你学Android」,工作日每日更新1x0 switch 分支语句昨天我们最后学习了分支结构中的 if 条件语句。其实和 if 条件语句还有个兄弟 —— switch 分支语句。switch 语句由一个控制表达式和多个 case 标签组成。看到一堆 case 标签了吧&…

[LeetCode] 697. 数组的度(Java)

[LeetCode] 697. 数组的度(Java) 1.题目描述 给定一个非空且只包含非负数的整数数组 nums,数组的 度 的定义是指数组里任一元素出现频数的最大值。 你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。 示例 1&#xff…

判断输入的日期字符串是否小于当前日期

package com.wonders; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; /** * 日期公共处理类 * author Liyongyong * */ public class DateUtils { /** * 判断是否是过去的日期 * para…

[LeetCode] 448. 找到所有数组中消失的数字(Java)

[LeetCode] 448. 找到所有数组中消失的数字(Java) 1.题目描述 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 示例 1:输入&#xf…

饥荒联机版连不上服务器_饥荒联机版无法连接klei服务器及刷不出服务器解决方法一览...

其实有时候连不上klei服务器和刷新不出服务器列表,是dns的问题。尤其一些三级宽带,像什么某城,某博士。就是被解析到了一个无法连通的服务器上。这时候换dns服务器,或者刷新dns缓存,直到找到一个能连通的服务器&#x…

Oracle12c部署,允许远程访问

Oracle的版本及类型:12c Oracle本地访问host为localhost,和其他关系型数据库mysql,sql server一样,Oracle远程访问同样需要修改host等参数。 因此,在部署Oracle前,需要确认的事只有一个:确保安…

renrenfast开源项目打包过程,前端使用vue element-UI,前后端分离,打包为一个jar包运行

项目使用的是renrenfast2.0 框架,后台springboot,前端vueelement-ui。项目本身有shiro拦截机制,需要放开static路径下文件,才可以访问。 步骤如下: 1.前端:npm run build (1)在dist目录下有3个文件&…

opencv对图像是软解码_C ++ OpenCV解码缓慢

I send a byte array of an image from C# to a C Library. I decode the image with OpenCV (Version 3.3.1) BMP images are fast in decoding but JPEG images are slow.How i can speed up the decoding time for JPEG images? (Multithreading, GPU, ...?)Performance o…

[算法] 原地哈希算法(Java)

[算法] 原地哈希算法(Java) 1.定义 原地哈希算法是指将原数组当成哈希表, 不开辟额外空间. 2.适用条件 原数组总所有数字范围都不超过数组长度, 也就是,给定一个数组nums, 原地哈希应用范围为[0, nums.length], 将数组元素本身作为nums的下标,也就是, nums[nums[i]]. 3.举…

[LeetCode] 442. 数组中重复的数据(Java)

[LeetCode] 442. 数组中重复的数据(Java) 1.题目描述 给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。 你必须设计并实现一个…

python中的bs4怎么导入_在Python 3.5导入BS4

I have installed both Python 3.5 and Beautifulsoup4. When I try to import bs4, I get the error below. Is there any fix for that? Or should I just install Python 3.4 instead?Please be very explicit - I am new to programming. Many thanks!Traceback (most re…