我正在用Java编写一个简单的服务器应用程序,现在我正在使用Apache编写一些基准测试。
启动后,服务器使用的驻留内存大约为40M。我制作了一系列的1000个请求(100个并发请求)。在每个系列之后,我再次检查内存的使用情况。结果对我来说很奇怪。
在基准测试的第一次运行中,99%的请求是在≈20 msecs中处理的,其余的1%是在大约300个msecs (!)中处理的。同时,内存的使用也在增加。在运行5-7之后,这个增长停止在1.2亿米,请求开始运行得更快--每个请求大约10毫秒。而且,当我增加请求的数量时,你的时间和我的价值保持不变。
为什么会发生这种事?如果有内存泄漏,那么我的服务器将需要越来越多的资源。我只能说,这是因为一些自适应JVM内存分配机制提前增加了堆大小。
发布于 2013-04-21 23:21:48
堆从Xms开始,并根据需要增长到指定的极限Xmx。
JVM需要一段时间来“警告”--各种优化都发生在运行时,这是正常的。
如果记忆上升到某个点,然后停止爬升,你就没事了。
如果内存无限期地攀升,并且程序最终抛出一个OutOfMemoryError,那么您就有了一个问题。
从您的描述来看,前者似乎是真的,因此没有内存泄漏。
https://stackoverflow.com/questions/16137193
复制相似问题