The number is held in an int[] – the maximum size of an array is Integer.MAX_VALUE. So the maximum BigInteger probably is (2 ^ 32) ^ Integer.MAX_VALUE.
Admittedly, this is implementation dependent, not part of the specification.
In Java 8, some information was added to the BigInteger javadoc, giving a minimum supported range and the actual limit of the current implementation:
BigIntegermust support values in the range-2Integer.MAX_VALUE(exclusive) to+2Integer.MAX_VALUE(exclusive) and may support values outside of that range.Implementation note:
BigIntegerconstructors and operations throwArithmeticExceptionwhen the result is out of the supported range of-2Integer.MAX_VALUE(exclusive) to+2Integer.MAX_VALUE(exclusive).