我有以下代码需要测试:
import java.math.BigInteger;
import java.util.Random;
public class TestBigInteger {
public static void main(String[] args) {
BigInteger bigInteger = BigInteger.probablePrime(32, new Random())
.multiply(BigInteger.probablePrime(32, new Random()));
BigInteger n = BigInteger.probablePrime(20, new Random());
while (!Thread.interrupted()) {
bigInteger.mod(n);
}
}
}
我从jconsole中得到了以下的图表:
为什么会这样呢?如果我的bigInteger
只有64位长度,为什么模运算会占用很多内存?
BigInteger.mod()
会创建多个对象,而你只是将它们丢弃。但是你可以偶尔看到GC清理这些垃圾。 - Kayaman