If you make a function call indirectly by invoking a Var object (which derefs itself and invokes the result), the invocation parameters remain in the thread's local stack for the duration of the function call, even though they are needed only long enough to be passed into the deref'd function. As a result, passing a lazy seq into a function invoked in its Var form may run out of memory if the seq is forced inside that function. For example:
Solution: Similar to RestFn, wrap each argN in Var inside a Util.ret1(argN, argN = null).
Screened by: Alex Miller
Probably all, but observed on Ubuntu 12.04, OpenJDK 6