Почему Git.pm на cygwin жалуется на «Недостаточно памяти во время« большого »запроса?
я получаю эту ошибку при выполнении git svn rebase в cygwin
Out of memory during "large" request for 268439552 bytes, total sbrk() is 140652544 bytes at /usr/lib/perl5/site_perl/Git.pm line 898, line 3.
268439552 - 256 МБ. Cygwin's максимальный объем памяти установлен на 1024 МБ, поэтому яЯ предполагаю, что у него другой максимальный объем памяти для Perl?
Как я могу увеличить максимальный объем памяти, который могут использовать perl-программы?
обновление: это где ошибка происходит (в Git.pm): I '
while (1) {
my $bytesLeft = $size - $bytesRead;
last unless $bytesLeft;
my $bytesToRead = $bytesLeft < 1024 ? $bytesLeft : 1024;
my $read = read($in, $blob, $bytesToRead, $bytesRead); //line 898
unless (defined($read)) {
$self->_close_cat_blob();
throw Error::Simple("in pipe went bad");
}
$bytesRead += $read;
}
Мы добавили печать перед строкой 898, чтобы распечатать $ bytesToRead и $ bytesRead, и в результате мы получили 1024 для $ bytesToRead и 134220800 для $ bytesRead, так чтоs читает 1024 байта за раз, и это уже прочитало 128 МБ. Perl'sчитать' функция не хватает памяти и пытается запросить удвоениеs объем памяти ... есть ли способ указать, сколько памяти запрашивать? или это зависит от реализации?
ОБНОВЛЕНИЕ 2: во время тестирования выделения памяти в cygwin: эта программа на C 'выходной был 1536MB
int main() {
unsigned int bit=0x40000000, sum=0;
char *x;
while (bit > 4096) {
x = malloc(bit);
if (x)
sum += bit;
bit >>= 1;
}
printf("%08x bytes (%.1fMb)\n", sum, sum/1024.0/1024.0);
return 0;
}
Хотя эта Perl-программа аварийно завершала работу, если размер файла превышал 384 МБ (но выполнялась успешно, если размер файла был меньше).
open(F, "