> Of course I assume this is only a proxy simpler reproducer > for the actual problem program
Of course this is a "reproducer" of the issue. > but just the same it is almost always possible > to refactor a program into a different algorithm that avoids the need > to enumerate so many arguments in memory. As you say: "almost". Take a look at the Stéphane Chazelas example to convince yourself. 2018-08-14 17:50 GMT-04:00 Bob Proulx <b...@proulx.com>: > I followed along through the script: > > > m=20000 > ... > > test1() { ... > > Eventually I got to this line: > > > set -- $(seq $m) > > At that line I see that bash must allocate enough memory to hold all > of the numbers from 1 through 20000 in memory all at one time. That > is very inefficient. That is at least 100K of memory. > > $ seq 20000 | wc -c > 108894 > > Of course I assume this is only a proxy simpler reproducer for the > actual problem program but just the same it is almost always possible > to refactor a program into a different algorithm that avoids the need > to enumerate so many arguments in memory. I suggest refactoring the > program to avoid the need for this memory stress. > > Bob >