Глядя на источник, BigDecimal сохраняет его как BigInteger с основанием,
private BigInteger intVal;
private int scale;
и от BigInteger
/** All integers are stored in 2's-complement form.
63: * If words == null, the ival is the value of this BigInteger.
64: * Otherwise, the first ival elements of words make the value
65: * of this BigInteger, stored in little-endian order, 2's-complement form. */
66: private transient int ival;
67: private transient int[] words;
Итак, самый большой BigDecimal будет,
ival = Integer.MAX_VALUE;
words = new int[Integer.MAX_VALUE];
scale = 0;
Вы можете выяснить, как установить это. : Р
[Редактировать] Так что просто для расчета,
В двоичном виде это,
(2 ^ 35) -2 1 (я думаю?)
в дополнении 2
01111111111111111 ... пока память не заполнится.