tomcat 配置指定jdk
我们使用tomcat时需要使用JDK环境变量,如果环境中配置了jdk可以直接使用。
有时服务器又多个jdk版本,或者说我们没有权限配置jdk环境变量。
我们也可以通过修改tomcat的配置文件,指定tomcat运行时所依赖jdk的路径,不需要再去配置环境变量。只要解压一个jdk就OK了。
windows系统里:
1、解压下载的tomcat;
2、找到bin下的catalina.bat文件;在文件的开始出添加如下代码:
set JAVA_HOME=D:\jdk\jdk1.8.0_31
set JRE_HOME=D:\jdk\jdk1.8.0_31\jre
上面的意思是设定JAVA_HOME和JRE_HOME的路径;
linux
在bin下找到catalina.sh,在文件的最开始加入如下代码:
export JAVA_HOME=/home/jdk/Java\jdk7\jdk1.7.0_51
export JRE_HOME=/home/jdk/Java\jdk7\jre7
这样就指定了jdk jre的路径,配置了java的运行环境,是不是很简单呢?
除此之外还有一切jre的参数可以配置,他的参数配置在JAVA_OPTS后面
举个例子,还是在刚才说的catalina.sh配置文件上面,我们应该看到过
export JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k "; 这句话是什么意思呢? 这里面可以指定堆栈的大小,垃圾回收等信息
-Xms300m 是指设定程序启动时占用内存大小。
-Xmx300m 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占用更多的内存,
超出了这个设置值,就会抛出OutOfMemory异常。
-Xss 是指设定每个线程的堆栈大小。
-Xmn2G 设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)
以上四个参数的设置都是默认以Byte为单位的,也可以在数字后面添加k,M,G
而且,超过机器本身的内存大小也是不可以的,否则就等着机器变慢而不是程序变慢了。
-XX:New Ratio:设置年轻代(包括Eden和两个Survivor区)与
年老代的比值(除去持久代).如果设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5
-XX:Survivor Ratio=8 Eden区与Survivor区的大小比值,设置为8,则两个Survivor区与一个Eden区的比值为2:8,
一个Survivor区占整个年轻代的1/10
当年轻代内存满时,会引发一次普通GC,该GC仅回收年轻代。需要强调的时,年轻代满是指Eden代满,Survivor满不会引发GC
记上就是常用配置,jvm的配置参数很多,大家有空也可以自己去查阅虚拟机相关的资料,所以只能调选几个说下。
-XX:+Print GCDetails 打印GC详细信息
-XX:+PrintGC TimeStamps 打印CG发生的时间戳
-XX:+Heap Dump OnOutOfMemoryError OOM时导出堆到文件 Out Of Memory
-XX:Heap DumpPath=d:/a.dump 导出OOM的路径 Out Of Memory
-XX:+Print HeapAtGC 每一次GC前和GC后,都打印堆信息
-XX:+Trace ClassLoading 监控类的加载 可以打印类的加载顺序
-XX:+PrintClass Histogram 按下Ctrl+Break后,打印类的信息
-XX:+DisableExplicit GC 禁止在启动期间显式调用System.gc()
-XX:Parallel GC Threads=8 设置垃圾收集器在并行阶段使用的线程数[一般设置为本机CPU线程数相等,即本机同时可以处理的个数,
设置过大也没有用]并发垃圾收集器使用的线程数量
大佬好