Esta es la solución más válida que encomtrarás compartir, sin embargo obsérvala detenidamente y analiza si es compatible a tu proyecto.
Solución:
Es una clase de precisión arbitraria, se hará tan grande como desee hasta que su computadora se quede sin memoria.
Mirando la fuente BigDecimal lo almacena como un BigInteger con un radix,
private BigInteger intVal;
private int scale;
y de 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;
Así que el BigDecimal más grande sería,
ival = Integer.MAX_VALUE;
words = new int[Integer.MAX_VALUE];
scale = 0;
Puedes averiguar cómo configurar eso. :PAGS
[Edit] Entonces, solo para calcular eso, en binario eso es,
(2^35)-2 1 (¿creo?)
en complemento a 2
01111111111111111… hasta que tu memoria RAM se llene.
Dada suficiente RAM, el valor es aproximadamente:
2240*10232
(Definitivamente está fuera por algunos órdenes de magnitud, pero en términos relativos es una estimación muy precisa).
Finalizando este artículo puedes encontrar las aclaraciones de otros sys admins, tú todavía tienes el poder insertar el tuyo si lo crees conveniente.