Tomcat、Jetty、GlassFish 等等这系列 Web容器/应用服务器,虽然做为容器,提供的是一个 Java Web 的运行时环境,以支持Servlet/JSP 等等这些内容的运行,但我们都很清楚,其本质上还是一个 Java 应用程序。 每次对于 容器的启动运行,都是把这个 Java 程序跑起来,来实现 Web 容器的能力。
做为一类“特殊”的 Java 应用程序,和任务其他的 Java 应用一样,需要使用到JVM,会有堆,会使用到垃圾回收,会涉及到不同的堆分区比例...
因此在对Web 容器( 应用服务器) 的调优中必不可少的是对于 JVM 的调优。
对于 JVM 的调优,主要有两个方面考虑:
内存大小配置
垃圾回收算法选择
当然,确切的说,以上两点并不互相独立,内存的大小配置也会影响垃圾回收的执行效率。
其中内存大小配置,最主要做的有
确定内存占用的总大小
确定内存中各个代(Gen) 的大小划分
内存大小配置
所谓内存大小的占用,是指应用程序启动后稳定运行一小段时间时,观察到的内存占用情况。