When an ArrayList exceeds its capacity, it reallocates its internal array to a larger size, typically 1.5 times the current size. This is part of its amortized time complexity strategy, allowing for efficient addition of elements over time. For example, if you start with a capacity of 10 and add the 11th element, the capacity will increase to 15.