Help
I believe there may be a problem with the garbage collector as it
doesn't seem to release all the memory when it is not reference
(But I could be wrong)
I have list my version, m/c spec and a simple program
Many thanks for any help in advance
Daividm
JDK_Version: jdk 1.1.6v2
JDK_Arch: i386 (x86)
Linux_Dist: Slackware
Linux_Dist_Ver: 2.0.0
Libc_Ver: 1.8.2
Ld_Ver: 0.1.2
Dyn_Java: no
I have a very small program that reads the entries in a zip file. The
file is 4.9MB
in size and contains 5302 entries. The program uses both methods for
reading a zip file
nextentry and enumeration. Under the enumeration method it runs out
of memory.
I have tried the program under Borland JBuilder (1 & 2) and (canyou
believe it)
microsoft J++ and they work fine.
I have 128MB of real memory and 128MB of swap, and the program still
runs out of memory. I have even force 'gc' but the program still
fails. Something must be wrong with the manangement of the memory.
That means each entry uses more than 48K. That can't be right.
Considering I ran the JBuilder on 32MB memory
I have included the source to the program etc.
Daivid
Libraries
ldconfig: version 1.8.2
/usr/local/lib:
/usr/X11R6/lib:
libXtst.so.6 => libXtst.so.6.1
libXt.so.6 => libXt.so.6.0
libXmu.so.6 => libXmu.so.6.0
libXi.so.6 => libXi.so.6.0
libXext.so.6 => libXext.so.6.1
libXaw.so.6 => libXaw.so.6.1
libXIE.so.6 => libXIE.so.6.0
libX11.so.6 => libX11.so.6.1
libSM.so.6 => libSM.so.6.0
libPEX5.so.6 => libPEX5.so.6.0
libICE.so.6 => libICE.so.6.0
libXpm.so.4 => libXpm.so.4.3
/usr/i486-linuxaout/lib:
libPEX5.so.6 => libPEX5.so.6.0
libXpm.so.4 => libXpm.so.4.3
libXt.so.6 => libXt.so.6.0
libXaw.so.6 => libXaw.so.6.0
libXIE.so.6 => libXIE.so.6.0
libX11.so.6 => libX11.so.6.0
libXt.so.3 => libXt.so.3.1.0
libXaw.so.3 => libXaw.so.3.1.0
libX11.so.3 => libX11.so.3.1.0
libdb.so.1 => libdb.so.1.85.1
libvga.so.1 => libvga.so.1.2.9
/usr/openwin/lib:
libxview.so.3 => libxview.so.3.2.2
libolgx.so.3 => libolgx.so.3.2.2
/usr/local/pgsql/lib:
libpq.so => libpq.so
libpq.so.1 => libpq.so.1
/usr/lib:
libtiff.so.1 => libtiff.so.1.3
librle.so.1 => librle.so.1.3
libppm.so.1 => libppm.so.1.3
libpnm.so.1 => libpnm.so.1.3
libpgm.so.1 => libpgm.so.1.3
libpbm.so.1 => libpbm.so.1.3
libjpeg.so.1 => libjpeg.so.1.3
libfbm.so.1 => libfbm.so.1.3
libform.so.3.0 => libform.so.3.0
libpanel.so.3.0 => libpanel.so.3.0
libmenu.so.3.0 => libmenu.so.3.0
libbfd.so.2.6.0.14 => libbfd.so.2.6.0.14
libopcodes.so.2.6.0.14 => libopcodes.so.2.6.0.14
libgpm.so.1 => libgpm.so.1.09
libdb.so.1 => libdb.so.1.85.4
libgdbm.so.2 => libgdbm.so.2.0.0
libdb.so.2 => libdb.so.2.0.0
libg++.so.27 => libg++.so.27.1.4
libstdc++.so.27 => libstdc++.so.27.1.4
libvgagl.so.1 => libvgagl.so.1.2.10
libvga.so.1 => libvga.so.1.2.10
/lib:
libdl.so.1 => libdl.so.1.8.2
libncurses.so.3.0 => libncurses.so.3.0
libtermcap.so.2 => libtermcap.so.2.0.8
libm.so.5 => libm.so.5.0.6
libgdbm.so.1 => libgdbm.so.1.7.3
libcurses.so.1 => libcurses.so.1.0.0
libc.so.5 => libc.so.5.3.12
libe2p.so.2 => libe2p.so.2.1
libss.so.2 => libss.so.2.0
libext2fs.so.2 => libext2fs.so.2.0
libcom_err.so.2 => libcom_err.so.2.0
libc.so.4 => libc.so.4.7.6
libm.so.4 => libm.so.4.6.27
libcurses.so.0 => libcurses.so.0.1.2
Program ZipCompress
// Uses Java 1.1 Zip compression to compress
// any number of files whose names are passed
// on the command line.
import java.io.*;
import java.util.*;
import java.util.zip.*;
public class ZipCompress {
public static void main(String[] args) {
try {
System.out.println("Checksum: " +
csum.getChecksum().getValue());
// Now extract the files:
System.out.println("Reading file");
FileInputStream fi =
new FileInputStream("test.zip");
CheckedInputStream csumi =
new CheckedInputStream(
fi, new Adler32());
ZipInputStream in2 =
new ZipInputStream(
new BufferedInputStream(csumi));
ZipEntry ze;
System.out.println("Checksum: " +
csumi.getChecksum().getValue());
while((ze = in2.getNextEntry()) != null) {
System.out.println("Reading file getNext Entry " + ze);
}
in2.close();
// Alternative way to open and read
// zip files:
ZipFile zf = new ZipFile("test.zip");
Enumeration e = zf.entries();
InputStream in ;
ZipEntry ze2;
int x1=0;
while(e.hasMoreElements()) {
if (x1++==20) {
System.runFinalization();
System.gc();
x1=0;
}
ze2 = (ZipEntry)e.nextElement();
System.out.println("nextElement File: " + ze2);
in = zf.getInputStream(ze2);
}
} catch(Exception e) {
e.printStackTrace();
}
}
}