我正在用 Java 编写一个简单的服务器应用程序,现在我正在使用Apache 基准进行一些基准测试。
启动后服务器使用的常驻内存大约为40M。我提出了一系列 1000 个请求(100 个并发请求)。在每个系列之后,我再次检查内存使用情况。结果对我来说似乎很奇怪。
在基准测试的第一次运行期间,99% 的请求在大约 20 毫秒内处理,其余 1% 的请求在大约 300 毫秒内处理(!)。同时内存使用量增长。在 5-7 次运行后,这种增长停止在 120M 并且请求开始运行得更快——每个请求大约 10 毫秒。此外,当我增加请求数时,时间和内存值保持不变。
为什么会发生这种情况?如果发生内存泄漏,那么我的服务器将需要越来越多的资源。我只能建议这是因为一些自适应 JVM 内存分配机制会提前增加堆大小。