编程语言
首页 > 编程语言> > java – 测试使用SoftReference的代码

java – 测试使用SoftReference的代码

作者:互联网

要使用SoftReference< T>获取任何代码要经过充分测试,必须想出一些方法来测试“呀,它已经被淘汰”的情况.通过使用’for-test’代码路径强制引用为null,可能会或多或少地模仿这一点,但这不会像GC那样完全管理队列.我想知道是否有人可以分享建立可重复,受控制的环境的经验,其中GC实际上被激活到收集和归零?

解决方法:

我会把问题分成两部分:

>返回null时测试代码路径.
>测试SoftReference.

对于#1,我会使用一个Mock,它返回null并且有足够的变化(有时是null,有时是真实对象)来测试你认为你将使用GC的所有相关场景.那将是单元测试.

接下来是一个集成测试,看看GC的行为WRT SoftReference是否符合您的预期.我不确定我是否会努力完全自动化这样的测试,除非可能是更大的负载测试环境,但如果这很重要,我会调整一个具有非常紧密的最大内存量和负载的JVM足够的内存来触发软参考收集.失败的路径是让代码不使用软引用,加载的内存应该导致OutOfMemory错误.然后通过转换为软引用来使测试通过.测试的目的应该是断言单元测试中对行为的假设.

标签:java,soft-references
来源: https://codeday.me/bug/20190606/1190856.html