Tomcat常见问题[内存溢出,虚拟目录配置等](一)
一、Tomcat内存溢出的解决方法
内存溢出一般有如下三种常见的原因:
- OutOfMemoryError: Java heap space
- OutOfMemoryError: PermGen space
- 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常见问题[内存溢出,虚拟目录配置等](一)的更多相关文章
- Tomcat热部署和虚拟目录配置
1.Tomcat如何配置热部署 默认就是 <Host appBase="webapps" autoDeploy="true" name="loc ...
- Tomcat中JVM内存溢出及合理配置及maxThreads如何配置(转)
来源:http://www.tot.name/html/20150530/20150530102930.htm Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚 ...
- Tomcat中JVM内存溢出及合理配置
Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机.Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识 ...
- TOMCAT服务器不写端口号、不写项目名访问项目、虚拟目录配置
一.不写端口. 这个问题都被问烂了,因为TOMCAT默认的访问端口为8080,而TCP/IP协议默认80端口访问,大家之所以看到别的网站都不写端口号是因为人家用的的80端口访问的,而80端口因为的TC ...
- tomcat虚拟目录配置
Tomcat6.0虚拟目录配置[转] 设虚拟目录 "site",通过 http://localhost:8080/site 访问物理路径 D:"site 文件夹里面的内容 ...
- JVM内存溢出及合理配置
Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机.Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识 ...
- 在apache虚拟目录配置
在apache虚拟目录配置中 <VirtualHost *:80>xxx xxx xxx</VirtualHost> 不能写成 <VirtualHost *>xxx ...
- apache虚拟目录配置实例
apache虚拟目录配置实例 一.首先,开启虚拟主机配置 在文件httpd.conf中找到: include conf/extra/httpd-vhosts.conf #开启 二.对httpd-vho ...
- Tomcat虚拟目录配置方法及原理
tomcat 安装好之后,只需要把你的程序包放到$Tomcat_Home$/webapps下就可以直接使用了.这样会使webapps越来越大就需要设置虚拟目录: 1.单个应用设置: 在<Host ...
随机推荐
- ssh基础(1)
1.链接远程 命令:ssh root@1.1.1.1 2.执行远程脚本 命令:ssh root@1.1.1.1 /data/demo/test.sh > 111.txt (执行远程的tes ...
- 学好Java只需要做到这7点,年薪20W起步
大道至简,所以扎实有用的方法,其实都是很简单的,难在踏踏实实的执行过程.今天为大家介绍的就是Java学习的7个看起来非常简单的方法,快学起来吧. 为什么要学习java? Java是目前最流行的编程语言 ...
- 权限控制方案之——基于URL拦截
概述: 在系统开发过程中需要考虑的一个重要的问题就是权限问题,权限问题也是安全问题的一个范畴,我们要求在用户登录系统之后,要控制用户可以访问的系统资源,使得用户只可以访问到系统事先分配好的资源:这里的 ...
- Netty In Action中文版 - 第六章:ChannelHandler
本章介绍 ChannelPipeline ChannelHandlerContext ChannelHandler Inbound vs outbound(入站和出站) 接受连接或创建他们仅仅是你的应 ...
- Poco logger 日志使用小析
Poco logger 日志使用小析 Poco logger 日志使用小析 日志 logger 库选择 Pocologger 架构简析 步骤一 生成消息 步骤二 写入logger 步骤三 导入chan ...
- Windows下一个curl使用
一.简介 在上一篇中我们涉及到了一个在Ubuntu下使用的curl命令,而且使用这个命令来模拟server的功能来向谷歌的C2DMserver发送数据. 以下简单的来说下在Windows下相同的使用c ...
- VUE线上通过nginx反向代理实现跨域
1.NGINX反向代理实现跨域 VUE代码中配置参考上一篇文章 nginx配置,红色框线内: 代码: location /list { proxy_set_header X-Real-IP $remo ...
- QProcess::startDetached(5.10有了一种新的方式)
From Qt 5.10 on, there is a new way how to start detached processes with QProcess. Of course you kno ...
- Installation and Configuration Guide
Harbor can be installed by one of three approaches: Online installer: The installer downloads Harbor ...
- RHEL 6和RHEL 7(CentOS 6和CentOS 7)恢复ROOT密码
RedHat 6恢复Root密码: 1.启动RedHat 6的时候在这个界面按任意键 2.出现如下界面,按 e 3.出现如下界面,选择第二个--kernel,然后再按 e 4.出现如下界面,输入 空格 ...