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 ...
随机推荐
- windows 10 常用快捷键
alt + space:最大.最小.关闭: 多屏互动:win+p 仅此电脑屏幕:复制:拓展:仅第二屏幕: 0. 不同于之前版本的变化 切换输入法:shift + alt: win + space: w ...
- phpStudy2018安装完成之后,Apache刚启动就关闭(PHPStudy 从别的电脑迁移过来)
原文:phpStudy2018安装完成之后,Apache刚启动就关闭 版权声明:本文为博主原创文章,未经博主允许不得转载.用于学习总结等. https://blog.csdn.net/pjz16102 ...
- DDD实战7 对项目进行单元测试
此次采用的方法是 创建一个单元测试项目 在其中利用HttpClient 模拟浏览器 webapi 进行post请求来验证程序. [TestClass] public class ProductTest ...
- 简单推导 PCA
考虑二维数据降低到一维的例子,如下图所示: 最小化投影方差(maximize projected variance): 1N∑n=1N(uuT1xn−uuT1x¯)=uuT1Suu1,s.t.uuT1 ...
- Analysis of variance(ANOVA)
方差分析,也称为"变异数分析",用于两个及两个以上样本均值(group means)差别的显著性检验.在 ANOVA 的环境下,一个观测得到的方差视为是由不同方差的源组合而成.
- WPF中StringFormat的用法
原文:WPF中StringFormat的用法 WPF中StringFormat的用法可以参照C#中string.Format的用法 1. C#中用法: 格式化货币(跟系统的环境有关,中文系统默认格式化 ...
- TypeScript Array Remove
定义一个数组 tags:any[]; 方法1:filter 删除并不留空位 this.tags = this.tags.filter(tag => tag !== removedTag); 方法 ...
- Angular语法(三)——数据绑定
绑定类型 绑定类型可以按照数据流的方向分为三类:从源到视图,从视图到源,以及双向序列 示例 <!-- Bind button disabled state to `isUnchanged` pr ...
- 优雅实现INotifyPropertyChanged接口——利用Lambda表达式
原文:优雅实现INotifyPropertyChanged接口--利用Lambda表达式 参考文章 在14年的时候,曾经读过上面的参考文章,不过当时并没有怎么理解,慢慢地也就将这篇文章忘诸脑后了. 直 ...
- glibc_error reporting
很多GNU C库里的函数都会侦测并报告错误条件.我们的程序需要检测这些错误条件.比如:我们打开一个输入文件时需要判断该文件是否正确的打开.如果没有正确打开,我们需要打印错误或者采取其他正确的方式.为了 ...