修改tomcat的jvm内存
#linux下找到文件/bin/catalina.sh
#大约250行插入一条语句
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn1024m -XX:MetaspaceSize=1024M -XX:MaxMetaspaceSize=1024M -DAUTO_TASK=1"
#window下需要安装tomcat服务
#1,找到bin目录,调用service.bat安装tomcatfuwu
#安装服务
./service.bat -install
#卸载服务
./service.bat uninstall
#移除服务
./service.bat remove
#安装成功后如下提示
Installing the service 'tomcat9-8080' ...
Using CATALINA_HOME: "D:\development\apache-tomcat-9.0.39"
Using CATALINA_BASE: "D:\development\apache-tomcat-9.0.39"
Using JAVA_HOME: "D:\development\jdk"
Using JRE_HOME: "D:\development\jdk"
Using JVM: "D:\development\jdk\bin\server\jvm.dll"
The service 'tomcat9-8080' has been installed.
#2.打开设备管理>服务和应用程序>服务>找到Apache Tomcat x.0 Tomcatx 服务手动启动服务
#3.双击打开tomcatXw.exe 即可看到参数设置界面
参数名 | 参数说明 |
---|---|
-server | 作为第一个参数声明,指以服务端形式启动,能发挥多核cpu性能 |
-Xms | 初始化heap堆内存大小,使用的最小内存 |
-Xmx | heap堆内存最大值 |
-Xmn | young generation新生代堆内存大小 |
-XX:MetaspaceSize | jdk1.8元空间初始大小,配置方案 1.如果不指定元空间的大小,默认情况下,元空间最大的大小是系统内存的大小,元空间一直扩大,虚拟机可能会消耗完所有的可用系统内存。 2.如果元空间内存不够用,就会报OOM。 3.默认情况下,对应一个64位的服务端JVM来说,其默认的-XX:MetaspaceSize值为21MB,这就是初始的高水位线,一旦元空间的大小触及这个高水位线,就会触发Full GC并会卸载没有用的类,然后高水位线的值将会被重置。 4.从第3点可以知道,如果初始化的高水位线设置过低,会频繁的触发Full GC,高水位线会被多次调整。所以为了避免频繁GC以及调整高水位线,建议将-XX:MetaspaceSize设置为较高的值,而 |
XX:MaxMetaspaceSize | jdk1.8元空间最大配置 |
-Xss | 每个线程的Stack栈内存大小 |
备注: | 除此之外还可以设置自定义变量参数写法为 -D<变量名>=<变量值> 例如: -DAUTO_TASK=1 在tomcat应用程序中使用System.getProperty("<变量名>"); 获得变量参数 |
解决windows环境下的tomcat接收请求参数乱码问题
原因,由于windows环境下默认编码是GBK导致客户端请求参数到tomcat时发生乱码
解决方案如下:
打开/bin/catalina.bat文件
在第216行插入 -Dfile.encoding=UTF-8 变量 然后重启tomcat
如下图: