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();
       }
     }
   }


Reply via email to