Subject: | Out of Memory Failure |
Hello Dmitry,
We are using the Spreadsheet XLSX module in our Production environment
for reading Excel files on our AIX box and transform to CSV files. We
were running fine until we received XLSX files greater than 40MB. We
are now failing with an 'Out of memory' - I know this is because we are
reading the whole file at once - but dont know if there is a way to
reduce the memory usage (like in Spreadsheet::ParseExcel, I remember
you had provided the cell handler function that reduced the size of the
cell object). Is there something similar available for
Spreadsheet::XLSX?
Your help is greatly appreciated!
Also, here is our perl environment information to aid your review -
Summary of my perl5 (revision 5 version 10 subversion 1) configuration:
Platform:
osname=aix, osvers=5.3.0.0, archname=aix
uname='aix laatdm62 3 5 00c396bc4c00 '
config_args='-de -Dcc=cc_r'
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc_r -q32', ccflags ='-D_ALL_SOURCE -D_ANSI_C_SOURCE -
D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -DUSE_NATIVE_DLOPEN -q32 -
D_LARGE_FILES -qlonglong',
optimize='-O',
cppflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-
1 -qnoansialias -DUSE_NATIVE_DLOPEN'
ccversion='', gccversion='', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='ld', ldflags =' -brtl -bdynamic -b32 -bmaxdata:0x80000000'
libpth=/lib /usr/lib /usr/ccs/lib
libs=-lbind -lnsl -ldbm -ldl -lld -lm -lcrypt -lc
perllibs=-lbind -lnsl -ldl -lld -lm -lcrypt -lc
libc=/lib/libc.a, so=a, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_aix.xs, dlext=so, d_dlsymun=undef, ccdlflags=' -
bE:/usr/local/lib/perl5/5.10.1/aix/CORE/perl.exp'
cccdlflags=' ', lddlflags=' -bhalt:4 -G -bI:$(PERL_INC)/perl.exp -
bE:$(BASEEXT).exp -bnoentry -lc -lm'
Characteristics of this binary (from libperl):
Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP
USE_LARGE_FILES USE_PERLIO
Built under aix
Compiled at Feb 26 2011 02:13:00
@INC:
/usr/local/lib/perl5/5.10.1/aix
/usr/local/lib/perl5/5.10.1
/usr/local/lib/perl5/site_perl/5.10.1/aix
/usr/local/lib/perl5/site_perl/5.10.1
Also, here is our OS information -
AIX laatdm62 3 5 00C396BC4C00
Thanks for the help!