一、Tomcat内存溢出的解决方法

  内存溢出一般有如下三种常见的原因:

  1. OutOfMemoryError: Java heap space
  2. OutOfMemoryError: PermGen space
  3. OutOfMemoryError: unable to create new native thread

  那么怎么解决这三种常见的情况呢?

  1、OutOfMemoryError出现原因

  JVM在启动的时候会默认设置Heap size的值,即初始空间(-Xms)设置为物理内存的1/64,最大空间(-Xmx)设置为物理内存的1/4。而JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将就会抛出OutOfMemoryError异常。要解决我们就不使用默认设置手动给初始空间和最大空间配置空间就解决了。

  2、不同环境的解决方法

  ①Linux环境下的Tomcat

  在apache-tomcat-5.5.23/bin 目录下找到catalina.sh

  在第一行的后面添加上:JAVA_OPTS='-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M'(单引号不要少了,server模式运行效率比默认的client会高)

  ②windows环境下的Tomcat

  在apache-tomcat-5.5.23/bin 目录下找到catalina.bat

  在第一行的后面添加上:set JAVA_OPTS=-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M

  ③IntelliJ IDEA开发环境设置Tomcat

  在vm options设置 -server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M

  ④eclipse开发环境

如上图,在红色圈中填写-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M

  以上就是4种常见环境的内存溢出的解决方案。

二、Tomcat虚拟目录配置

  公司的需求千变万化,你完全不知道下一刻会遇到什么样的坑或者其他什么让人无奈的情况。

  先说一下怎么配置Tomcat的虚拟目录:

  ①找到apache-tomcat-7.0.82\conf目录下的server.xml

  在<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">标签里面添加

<Context path="/app" docBase="c:\project" reloadable="true" crossContext="true" />标签

  ②Context 标签属性说明:

  path:访问资源的url入口,用浏览器http://localhost:8080/app/123.txt,就能访问到c:\project目录下的123.txt文件了。

  docBase:作用映射指定的文件夹或者文件(包括项目),路径可以是给定的绝对路径,也可以是相对路径,相对路径是相对于webapps 的路径。

  reloadable:这个属性设为 true,tomcat在运行状态下会监视在classes 和lib 目录下class 文件的改动并且自动重新加载 Web 应用。(建议:生产环境最好不要设置为true,较耗资源。)

  crossContext:这个属性跟应用挂钩,如果docBase映射的是一个项目,改属性设置为true时,应用调用 ServletContext.getContext()时会返回在该虚拟主机上运行的其他 web application。考虑安全性的话就将该属性设置为false,这样getContext()返回的则是 null。

  ③注意事项

  docBase设的路径可以是文件夹也可以具体的文件。

  Windows环境docBase的路径是用\来分割目录,而虚拟机环境则是用/来分割目录,不然启动Tomcat会报错。

  欢迎评论,相互学习相互促进。

Tomcat常见问题[内存溢出,虚拟目录配置等](一)的更多相关文章

  1. Tomcat热部署和虚拟目录配置

    1.Tomcat如何配置热部署 默认就是 <Host appBase="webapps" autoDeploy="true" name="loc ...

  2. Tomcat中JVM内存溢出及合理配置及maxThreads如何配置(转)

    来源:http://www.tot.name/html/20150530/20150530102930.htm Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚 ...

  3. Tomcat中JVM内存溢出及合理配置

    Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机.Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识 ...

  4. TOMCAT服务器不写端口号、不写项目名访问项目、虚拟目录配置

    一.不写端口. 这个问题都被问烂了,因为TOMCAT默认的访问端口为8080,而TCP/IP协议默认80端口访问,大家之所以看到别的网站都不写端口号是因为人家用的的80端口访问的,而80端口因为的TC ...

  5. tomcat虚拟目录配置

    Tomcat6.0虚拟目录配置[转] 设虚拟目录 "site",通过 http://localhost:8080/site 访问物理路径 D:"site 文件夹里面的内容 ...

  6. JVM内存溢出及合理配置

    Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机.Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识 ...

  7. 在apache虚拟目录配置

    在apache虚拟目录配置中 <VirtualHost *:80>xxx xxx xxx</VirtualHost> 不能写成 <VirtualHost *>xxx ...

  8. apache虚拟目录配置实例

    apache虚拟目录配置实例 一.首先,开启虚拟主机配置 在文件httpd.conf中找到: include conf/extra/httpd-vhosts.conf #开启 二.对httpd-vho ...

  9. Tomcat虚拟目录配置方法及原理

    tomcat 安装好之后,只需要把你的程序包放到$Tomcat_Home$/webapps下就可以直接使用了.这样会使webapps越来越大就需要设置虚拟目录: 1.单个应用设置: 在<Host ...

随机推荐

  1. node assert模块 Study.1

    1.assert() 大体理解意思:assert可以抽象理解为node中的alert++ assert模块是Node的内置模块,用于断言的作用,如果不是自己想要的就抛出错误 assert(arg1, ...

  2. QT调用VC DLL的例子(所有源码)

    http://blog.csdn.net/zhuce0001/article/details/20651025 http://blog.csdn.net/zhuce0001/article/detai ...

  3. springCloud跨域访问

    转自:http://blog.csdn.net/wangkang80/article/details/72829390 什么是跨域? 假设你在http://xxx.com/test/下有一个js文件, ...

  4. PFIF网上寻人协议

    原文:http://www.csdn.net/article/2013-04-22/2814980 本文的主要内容来自Wikipedia(http://en.wikipedia.org/wiki/Pe ...

  5. 开启win10下Ubuntu子系统的SSH服务

    原文:开启win10下Ubuntu子系统的SSH服务 版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog.csdn.net/zhouzme https://blog.csdn ...

  6. OpenCV中基于Haar特征和级联分类器的人脸检测

    使用机器学习的方法进行人脸检测的第一步需要训练人脸分类器,这是一个耗时耗力的过程,需要收集大量的正负样本,并且样本质量的好坏对结果影响巨大,如果样本没有处理好,再优秀的机器学习分类算法都是零. 今年3 ...

  7. WPF特效-实现弧形旋转轮播图

    原文:WPF特效-实现弧形旋转轮播图 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013224722/article/details/77004 ...

  8. c#调用ffmpeg嵌入srt/ass字幕提示Unable to open xxx.srt......

    最近接触到c#调用ffmpeg嵌入srt/ass字幕,碰到一个错误困扰了很久 Unable to open xxx.srt Error initializing filter 'subtitles' ...

  9. C# 有道API翻译 查询单词详细信息

    原文:C# 有道API翻译 查询单词详细信息 有道云官方文档 有道云翻译API简介:http://ai.youdao.com/docs/doc-trans-api.s#p01 有道云C#Demo : ...

  10. delphi之多线程编程(尚未学习)

    本文的内容取自网络,并重新加以整理,在此留存仅仅是方便自己学习和查阅.所有代码均亲自测试 delphi7下测试有效.图片均为自己制作. 多线程应该是编程工作者的基础技能, 但这个基础我从来没学过,所以 ...