Read from txt file - .OutOfMemoryError: Java heap space

I hava a text file. Read row by row and add every row to the LinkedMap. If number of row in file are 2 000 - OK it's work. But when number of rows > 2 500 I get the next exception:
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
[java] at java.util.Arrays.copyOf(Unknown Source)
[java] at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
[java] at java.lang.AbstractStringBuilder.append(Unknown Source)
[java] at java.lang.StringBuffer.append(Unknown Source)
[java] at java.io.BufferedReader.readLine(Unknown Source)
[java] at java.io.BufferedReader.readLine(Unknown Source)
try {
         File sourceImportFile = getSourceImportFile();
         FileInputStream fin = new FileInputStream(sourceImportFile
               .getPath());
         BufferedReader br = new BufferedReader(new InputStreamReader(fin));
         String line;
         while ((line = br.readLine()) != null) { // HERE THROW  java.lang.OutOfMemoryError: Java heap space
...

malcolmmc wrote:
Well, it looks like it may be seeing an enormously long line. Are you sure the file you are reading is sensibly formatted?
According to the stack trace it's crashing when readLine tries to make more room for the line of text being read.
It's either that or you really are storing more data than you have room for, and 2,500 lines is not a very large file.It did occur to me that he might be trying to read a binary file as if it were a text file.

Similar Messages

  • "java.lang.OutOfMemoryError: Java heap space"  while trying to read Excel.

    Hi Experts,
    Here is my query. I'm trying to upload excel data into database table. This excel contains more than 20000 records. I'm storing this data in a vector after reading it & passing this vector as a parameter to another method(not mentioned in the below code) which writes into the database. The code works for records <4000, but fails to read beyond that & throws exception as below.
    HTTP Status 500 -
    type Exception report
    message
    description The server encountered an internal error () that prevented it from fulfilling this request.
    exception
    org.apache.jasper.JasperException: Java heap space
         org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:433)
         org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
         org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
         org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause
    javax.servlet.ServletException: Java heap space
         org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841)
         org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774)
         org.apache.jsp.readexcelsap_jsp._jspService(readexcelsap_jsp.java:365)
         org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
         org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
         org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
         org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause
    java.lang.OutOfMemoryError: Java heap space
    Below is the code for reference. Kindly Help me in getting this heap space error rectified or suggest me alternate ways.
    I tried increasing Heap space as googled but in vain.
    <%!
    private Vector readExcelSheet(String uploadedFilePath, int sheetNo) throws IOException
         Vector allRowInfo = null;
            try
                HSSFSheet sheet= getWorkSheet(uploadedFilePath,sheetNo);
                //System.out.println(uploadedFilePath);
                //System.out.println(sheetNo);
                //System.out.println("--Sheet--"+sheet);
                //System.out.println("--Sheet--"+sheet.getLastRowNum());
                if(sheet!=null)
                allRowInfo = new Vector();
                for(int i=0;i<=sheet.getLastRowNum();i++)
                    HSSFRow row= sheet.getRow(i);
                    Vector eachRowInfo = new Vector();
                    for(short j=0;j<row.getLastCellNum();j++)
                        eachRowInfo.add(getCellContents(row.getCell(j)));
                        //System.out.println("--"+row.getCell(j));
                    allRowInfo.add(eachRowInfo);
                else
                     allRowInfo = null;
                //return allRowInfo;
            catch (FileNotFoundException ex)
                 System.out.println("-- Error in reading--getWorkSheet -- 1--"+ex);
                 allRowInfo = null;
            catch (IOException ex)
                 System.out.println("-- Error in reading--getWorkSheet-- 2 --"+ex);
                 allRowInfo = null;
            catch (IndexOutOfBoundsException ex)
                 System.out.println("-- Error in reading--getWorkSheet-- 2 --"+ex);
                 allRowInfo = null;
            catch (NullPointerException ex)
                 System.out.println("-- Error in reading--getWorkSheet --"+ex);
                 allRowInfo = null;
            catch(Exception e)
                System.out.println(e.getMessage());
                e.printStackTrace();
                 allRowInfo = null;
            return allRowInfo;
    %>
    <%!
    private HSSFSheet getWorkSheet(String uploadedFilePath, int sheetNo) throws IOException
            HSSFSheet sheet = null;
            try
                FileInputStream inputStream=new FileInputStream(uploadedFilePath);
                POIFSFileSystem poisFile=new POIFSFileSystem(inputStream);
                HSSFWorkbook workBook= new HSSFWorkbook(poisFile);
                sheet = workBook.getSheetAt(sheetNo);
            catch (FileNotFoundException ex)
                 System.out.println("-- Error in reading--getWorkSheet --"+ex);
                 sheet = null;
            catch (IOException ex)
                 System.out.println("-- Error in reading--getWorkSheet --"+ex);
                 sheet = null;
            catch (IndexOutOfBoundsException ex)
                 System.out.println("-- Error in reading--getWorkSheet --"+ex);
                 sheet = null;
            catch (NullPointerException ex)
                 System.out.println("-- Error in reading--getWorkSheet --"+ex);
                 sheet = null;
            catch(Exception e)
                System.out.println(e.getMessage());
                e.printStackTrace();
                sheet = null;
             return sheet;
    %>
    <%!
    public String getCellContents(HSSFCell cell)
            String cellValue="";
            String cellValue1="";
            if(cell!=null)
                 int cellType= cell.getCellType();
                if(cellType==HSSFCell.CELL_TYPE_NUMERIC)
                    cellValue=(float)cell.getNumericCellValue()+"";           
                if(cellType==HSSFCell.CELL_TYPE_STRING)
                     cellValue1=cell.getStringCellValue();
                     StringBuffer sb = new StringBuffer();
                     for(int i = 0; i < cellValue1.length(); i++)
                            sb.append(cellValue1.charAt(i));
                         if(cellValue1.charAt(i)=='\'')
                              sb.append('\'');
                     cellValue = sb.toString();
           return cellValue;
    %>
    <html>
    <body>
    <%
         String file_Name="Myexcel.xls";
         String path = "D://Test Upload//"+file_Name;
         Vector list = readExcelSheet(path,0);
    </html>
    </body>Regards
    Venky
    Edited by: Venky_86 on Jun 17, 2009 6:05 AM

    HOW did you increase the heap space? As that is the only solution you have in this case really.
    It is a known fact that POI can use up a lot of memory for big spreadsheets. If at all possible, I would try to switch to plain text comma separated files / tab delimited files. If you cannot do that, I would try to put a size restriction on the sheets that your application will process to get rid of the heap space risk. A sheet can contain 20000 records, or four sheets can contain 5000 records; in both cases you process the exact same data, but at only 25% of the total memory usage.

  • "java.lang.OutOfMemoryError: Java heap space" when comparing files

    Hi,
    I need to take differences between the existing jazn-data.xml and the jazn-data.xml file downloaded from ADR and keep only the required changes. For this, I copied the contents of the new jazn file into the existing one and then tried to use the history tab to compare.
    But I am encountering this error always
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
         at oracle.javatools.compare.algorithm.sequence.SequenceCompareAlgorithm.getDifferences(SequenceCompareAlgorithm.java:153)
         at oracle.javatools.compare.algorithm.sequence.SequenceCompareAlgorithm.compare(SequenceCompareAlgorithm.java:55)
         at oracle.javatools.compare.CompareModelFactory.createCompareModel(CompareModelFactory.java:116)
         at oracle.diffmergevhv.diffmerge.DiffMergeView.openImpl(DiffMergeView.java:949)
         at oracle.diffmergevhv.ToolView.open(ToolView.java:310)
         at oracle.diffmergevhv.ToolMain.openView(ToolMain.java:493)
         at oracle.diffmergevhv.ToolMain.executeGUI(ToolMain.java:146)
         at oracle.diffmergevhv.ToolMain.execute(ToolMain.java:91)
         at oracle.diffmergevhv.diffmerge.DiffMergeTask.execute(DiffMergeTask.java:23)
         at oracle.diffmergevhv.diffmerge.DiffMergeMain.main(DiffMergeMain.java:344)
    i tried changing the user memory env setup also but didn't work. I am using 12gb memory slc machine
    " setenv USER_MEM_ARGS "-XX:CompileThreshold=8000 -XX:PermSize=96m -XX:MaxPermSize=2048m -Xms128m -Xmx8192m "
    I also tried the "ade diff -gui " command but the problem remains the same.
    The file sizes are:
    existing jazn: 2.2 MB
    new jazn : 3.4 MB
    Thanks,
    Mehul

    The way i do is..
    setenv ADE_MERGE_METHOD tkmerge
    use the ade diff -gui command
    then unset the ADE_MERGE_METHOD to default by using the following.
    unsetenv ADE_MERGE_METHOD
    Thanks,
    Venu

  • Java.lang.OutOfMemoryError: Java heap space While deploying 'ear' file

    I am using below code to deploy an 'ear' file on weblogic 10.3
    package com.qasource;
    import java.io.*;
    import java.util.Hashtable;
    import weblogic.deploy.api.tools.*;  //SesionHelper
    import weblogic.deploy.api.spi .*;  //WebLogicDeploymentManager
    import javax.enterprise.deploy.spi.TargetModuleID;
    import javax.enterprise.deploy.spi.status.ProgressObject;
    import javax.enterprise.deploy.spi.status.DeploymentStatus;
    import javax.enterprise.deploy.shared.ModuleType;
    import javax.enterprise.deploy.spi.Target;
    import javax.management.MBeanServerConnection;
    import javax.management.remote.JMXConnector;
    import javax.management.remote.JMXConnectorFactory;
    import javax.management.remote.JMXServiceURL;
    import javax.naming.Context;
    public class WeblogicTest
         public static void main(String ar[]) throws Exception
              System.out.println("Start Deploying");
              WebLogicDeploymentManager deployManager=SessionHelper.getRemoteDeploymentManager( "t3", "10.0.0.47", "7003", "weblogic",
              "weblogic123");
              System.out.println("Deploy Manager  :  " + deployManager);
              DeploymentOptions options = new DeploymentOptions();
              options.setName("TC33");          //TODO
              Target targets[] = deployManager.getTargets();
              System.out.println("Target  :  " + targets);
              Target deployTargets[]=new Target[1];     
              int temp=0;
              for (temp=0; temp < targets.length; temp++){
                   if(targets[temp].getName().equals("new_ManagedServer_1")){
                        deployTargets[0]=targets[temp];
              ProgressObject processStatus=deployManager.distribute(deployTargets, new                
                        File("\\\\10.0.0.47\\Builds\\VertexTest\\domain1\\tc3.3b74_6.2.2011.19\\test-3.3.0.0074.ear"), null,options);
              DeploymentStatus deploymentStatus=processStatus.getDeploymentStatus() ;
              System.out.println("UnDeploymentStayus.getMessage(): "+deploymentStatus.getMessage() );
              Thread.sleep(5000);
              TargetModuleID[] targetModuleIDs=deployManager.getAvailableModules(ModuleType.EAR, deployTargets);
              System.out.println("\n\t targetModuleIDs [] = "+targetModuleIDs);
              for (int j=0;j<targetModuleIDs.length;j++){
                   System.out.println("\n\t "+targetModuleIDs[j]);
                   deployManager.start(targetModuleIDs);
                   deployManager.start(targetModuleIDs);
    }My environment: Window XP
    Weblogic: 11g
    ear file size: 97886 KB
    Admin server arguments: -Xms=512m Xmx=512m
    Managed server arguments: -Xms=512m Xmx=512m
    But above code is showing java.lang.OutOfMemoryError: Java heap space:
    below is the log statements:
    Start Deploying
    Deploy Manager : [email protected]eb5
    Target : [Ljavax.enterprise.deploy.spi.Target;@fd918a
    <Jun 3, 2011 11:20:17 AM IST> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating distribute operation for application, TC33 [archive: \\10.0.0.47\Builds\VertexTest\domain1\tc3.3b74_6.2.2011.19\test-ear-3.3.0.0074.ear], to new_ManagedServer_1 .>
    UnDeploymentStayus.getMessage(): java.lang.OutOfMemoryError: Java heap space
         targetModuleIDs [] = null
    Exception in thread "main" java.lang.NullPointerException
         at com.qasource.WeblogicTest.main(WeblogicTest.java:48)
    <Jun 3, 2011 11:21:21 AM IST> <Warning> <JNDI> <BEA-050001> <WLContext.close() was called in a different thread than the one in which it was created.>
    Can any tell me how to resolve this issue.
    Edited by: 861978 on Jun 2, 2011 10:51 PM
    Edited by: 861978 on Jun 2, 2011 10:52 PM

    Hi,
    Yes,René van Wijk has said rite..
    Just open the Weblogic console,
    expand Environment-->Server-->(ur managed server)-->Server Start tab
    Just enter the below lines in Arguments:
    -Xms1024m -Xmx1024m -XX:MaxPermSize=256m
    Then bounce your managed server
    This should solve your problem
    Regards
    Fabian

  • OutOfMemoryError: Java heap space error when exporting more than 65MB file

    Hi all,
    My requirement is to export 65Mb file in a CSV format.There is no possibility for me to increase the heap size.
    But ,I get the following error which is below the code while doing an export.
    Whole 65mb ,I am putting into the response stream.I am not sure whether this is allowed or not.If not,please tell me the alternatives.
    ServletOutputStream out = null;
    final FacesContext faces = FacesContext.getCurrentInstance();
    final HttpServletResponse response = (HttpServletResponse) faces
    .getExternalContext().getResponse();
    response.setContentType( "application/download" );
    response.setHeader( ...................);
    final byte[] byteArray = eachLine.toString().getBytes();
    response.setContentLength( byteArray.length );
    out.write(byteArray);
    java.lang.OutOfMemoryError: Java heap space
    at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:95)
    at org.apache.myfaces.webapp.filter.ExtensionsResponseWrapper$MyServletOutputStream.write(ExtensionsResponseWrapper.java:138)
    at org.ajax4jsf.io.FastBufferOutputStream.writeTo(FastBufferOutputStream.java:151)
    at org.ajax4jsf.framework.ajax.xmlfilter.FilterServletResponseWrapper.sendContent(FilterServletResponseWrapper.java:469)
    at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:193)
    at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:100)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    Edited by: Neelims on Apr 4, 2009 3:48 AM
    Edited by: Neelims on Apr 4, 2009 3:51 AM

    Hi
    final byte[] byteArray = eachLine.toString().getBytes();
    response.setContentLength( byteArray.length );
    out.write(byteArray);
    I assume eachLine is an object that holds the 100MB file contents, just release the memory held by this object before you start the writing part as shown below
    final byte[] byteArray = eachLine.toString().getBytes();
    eachLine=null;//removed the reference holding the memory
    System.gc()//if JVM is in a good mood may be it will release some memory
    response.setContentLength( byteArray.length );
    out.write(byteArray);
    before throwing out of memeory JVM may try to run the garbage collecter as you have initialised your object it might free up some memory

  • Trouble with  "java.lang.OutOfMemoryError: Java heap space"

    Hello,
    I use a Java-based modeling tool that very few out there are probably familiar with. This tool allows me to run models (program) from within the development environment, to create Applets or create jar files that can be executed in a stand-alone fashion.
    I am using a database on my local harddrive to read in some data using JDBC, so am not using the Applet option with certificates. The development environment is expensive, so can't be distributed. That leaves the stand-alone option.
    The model (program) I've written runs perfectly fine in the development environment and, previously, has worked fine as a stand-alone program. However, the stand-alone option isn't working anymore, because I keep getting this error.
    I am not much of a Java programmer; I'm learning as I go along. If anyone can help me solve this, I'll be most appreciative
    From my cmd prompt:
    C:\Documents and Settings\072\Desktop\TA\for\for Applet Files>cd "C:\D
    ocuments and Settings\072\Desktop\TA\for\for Applet Files"
    C:\Documents and Settings\072\Desktop\TA\for\for Applet Files>java -cl
    asspath enterprise_library.jar;business_graphics_library.jar;for.jar;xjanylog
    ic5engine.jar for/Main$Simulation
    Started...
    AnyLogic simulation engine has started [$Id: Engine.java,v 1.134 2004/12/03 08:4
    9:39 basil Exp $]
    java.lang.OutOfMemoryError: Java heap space
    setting error: Exception during root.courseQueue-1556 startup: java.lang.OutOfMe
    moryError: Java heap space
    thread = Thread[Model Creation Thread,5,main]
    engine = com.xj.anylogic.Engine@1099257
    Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap spac
    e
    java.lang.OutOfMemoryError: Java heap space
    setting error: Exception during startup: java.lang.OutOfMemoryError: Java heap s
    pace
    thread = Thread[Model Creation Thread,5,main]
    engine = com.xj.anylogic.Engine@1099257
    java.lang.OutOfMemoryError: Java heap space
    setting error: Exception in statechart 'root.courseExit-0.inputProcessor' entry
    actions: java.lang.OutOfMemoryError: Java heap space
    thread = Thread[AnyLogic main thread,5,main]
    engine = com.xj.anylogic.Engine@1099257
    java.lang.OutOfMemoryError: Java heap space
    setting error: Exception in statechart 'root.courseDelay-0.inputProcessor' entry
    actions: java.lang.OutOfMemoryError: Java heap space
    thread = Thread[AnyLogic main thread,5,main]
    engine = com.xj.anylogic.Engine@1099257
    java.lang.OutOfMemoryError: Java heap space
    setting error: Exception in statechart 'root.courseDelay-1.inputProcessor' entry
    actions: java.lang.OutOfMemoryError: Java heap space
    thread = Thread[AnyLogic main thread,5,main]Exception in thread "AWT-EventQueu
    e-0"
    java.lang.OutOfMemoryError: Java heap space
    engine = com.xj.anylogic.Engine@1099257

    Hi I am ancountering the same problem with the 'heap space'.
    Is there any way I can find out what it is set to for my system? I dont believe its 32Mb and dont want to increase it randomly to too large a size if theres no need for it.
    Thanks,
    Bobby

  • Java.lang.OutOfMemoryError: Java heap space

    I am writing an application in struts for file downloading from the database. I am using struts 1.1 with tomcat5.0 server. File downloading is working fine for images of smaller sizes( i checked utpo 3mb of size). my application should download the files with a maximum 1gb size. But when I tried to download the image of 85mb, "out of memory" exception is thrown" and this is the complete trace of that exception...
    Oct 19, 2006 4:11:35 PM org.apache.struts.actions.DispatchAction dispatchMethod
    SEVERE: Dispatch[pages/DoctorModule/medicalrecord/frame/referencedoc] to method getReportFormat returned an exception
    java.lang.reflect.InvocationTargetException
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
         at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
         at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:480)
         at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
         at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1420)
         at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:520)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
         at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
         at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
         at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.OutOfMemoryError: Java heap space
    Oct 19, 2006 4:11:35 PM org.apache.struts.action.RequestProcessor processException
    WARNING: Unhandled Exception thrown: class java.lang.IllegalStateException
    I checked using downloading action example from struts1.2.6, even thats giving the same out of memory exception. Any how my application uses only 1.1. so Please give me some solution for this exception..

    Finally, the problem was :
        jstring str;
        for(int i = 0; i < xxx.GetSize(); i++){
            CString cstr = xxx.GetAt(i);
            str =  env->NewStringUTF(cstr.GetBuffer(0));
            env->SetObjectArrayElement(secondParam, i, str);
            /* release memory */
            env->DeleteLocalRef(counterUIName);
        }The "DeleteLocalRef(counterUIName);" should be made for each iteration.
    Thanks,
    Alex..

  • Dbca errors out with java.lang.OutOfMemoryError: Java heap space

    hi gurus
    I am trying to use DBCA to create a 10.2.0.4 database on a HP platform.DBCA hangs at the step 6 and following message can be seen in the
    trace.log:
    java.lang.OutOfMemoryError: Java heap space
    I googled and modified the DBCA scripts content from
    # Run DBCA
    $JRE_DIR/bin/java -Dsun.java2d.font.DisableAlgorithmicStyles=true -DORACLE_HOME=$OH -DDISPLAY=$DISPLAY -DJDBC_PROTOCOL=thin -mx128m
    -classpath $CLASSPATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS
    to
    # Run DBCA
    $JRE_DIR/bin/java -Dsun.java2d.font.DisableAlgorithmicStyles=true -DORACLE_HOME=$OH -DDISPLAY=$DISPLAY -DJDBC_PROTOCOL=thin -mx256m
    -classpath $CLASSPATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS
    and rerun the DBCA and the problem still there.
    How to solve this problem?
    Thanks !
    Edited by: KevinMao on Mar 31, 2010 2:39 AM
    Edited by: KevinMao on Mar 31, 2010 2:42 AM

    hi gurus
    The problem has sovled.I supplyed the wrong file for the rawfile.conf,everything was fine after I provided the corrent one.
    Thanks for your time.

  • Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

    i have a huge XML file of size 9 MB. I need to parse it and store it in a MYSQL database. When i execute the program, it throws me out of memory error and only 12668 rows have been inserted into the database. I use SAX parser to parse the XML. i have also given the stack trace of the error below. Kindly let me know how to resolve the issue.
    I have also changed the JAVA_OPTS to -Xms128m -Xmx512m but this didnt solve the issue.
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.jar.Manifest$FastInputStream.<init>(Unknown Source)
    at java.util.jar.Manifest$FastInputStream.<init>(Unknown Source)
    at java.util.jar.Manifest.read(Unknown Source)
    at java.util.jar.Manifest.<init>(Unknown Source)
    at java.util.jar.JarFile.getManifestFromReference(Unknown Source)
    at java.util.jar.JarFile.getManifest(Unknown Source)
    at sun.misc.URLClassPath$JarLoader$2.getManifest(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:430)
    at com.mysql.jdbc.PreparedStatement.getInstance(PreparedStatement.java:561)
    at com.mysql.jdbc.ConnectionImpl.clientPrepareStatement(ConnectionImpl.java:1395)
    at com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4178)
    at com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4077)
    at DBManager.insertSchedules(DBManager.java:30)
    at EPGParser.startElement(EPGParser.java:71)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)

    Check your code where u set the connection query; there's a procedure in my DBConnection class, looks like this:
         public void setQuery(String query) throws SQLException {          
              this.query = conn.prepareStatement(query);
    Should look the same for u, at least similar.
    I set the query this way: dbConn.setQuery("insert into groups (id, code, sectionID, languageID, year, no_students) values (?,?,?,?,?,?)");
    I had to insert 24,827 records into a table, and it throws the heap space exception u mentioned when it reaches 12,667. So what i did was to put dbConn.setQuery(...) outside the loop, and inside the loop it remains to set the parameters and execute the query from connection. It works for me. Hope will help u save some memory space.

  • Servlet - java.lang.OutOfMemoryError: Java heap space

    Hi,
    Does anyone know how to debug this error !!
    regards,
    Manmohan
    java.lang.OutOfMemoryError: Java heap space
    2006-05-12 11:38:16,485 INFO [STDOUT] SATS ERROR: DispatcherServlet system exception: Servlet execution threw an exception
    2006-05-12 11:38:16,485 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[drugtest]] System Exception!
    javax.servlet.ServletException: Servlet execution threw an exception
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:275)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
         at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
         at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
         at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:359)
         at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
         at com.auriga.drugtest.web.servlets.DispatcherServlet.redirect(DispatcherServlet.java:51)
         at com.auriga.drugtest.web.servlets.DispatcherServlet.service(DispatcherServlet.java:31)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
         at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
         at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
         at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:153)
         at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
         at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
         at java.lang.Thread.run(Thread.java:595)

    Where to change/set the memory size in config file. I am using tomcat 6.0, when i start to browse my application i am getting this error. But this error is not coming on all the systems which we work ,only on one system I am getting this type of error. What should I do. If there is a memory leak how to find it out?. our application user very huge memory and we cannot change/reduce the code. this is the error
    type Exception report
    message
    description The server encountered an internal error () that prevented it from fulfilling this request.
    exception
    org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/collections/SequencedHashMap
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause
    javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/collections/SequencedHashMap
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
    org.apache.jsp.include.do_005flogin_jsp._jspService(do_005flogin_jsp.java:436)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause
    java.lang.NoClassDefFoundError: org/apache/commons/collections/SequencedHashMap
    org.hibernate.mapping.Table.<init>(Table.java:33)
    org.hibernate.cfg.Mappings.addTable(Mappings.java:165)
    org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:290)
    org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:273)
    org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:144)
    org.hibernate.cfg.Configuration.add(Configuration.java:669)
    org.hibernate.cfg.Configuration.addInputStream(Configuration.java:504)
    org.hibernate.cfg.Configuration.addResource(Configuration.java:566)
    org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1587)
    org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555)
    org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534)
    org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508)
    org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
    org.hibernate.cfg.Configuration.configure(Configuration.java:1414)
    esq.connector.ConnectorFactory.prepareConnection(Unknown Source)
    esq.connector.ConnectorFactory.<init>(Unknown Source)
    esq.connector.ConnectorFactory.getConnector(Unknown Source)
    esq.connector.ConnectorFactory.getUserConnector(Unknown Source)
    esq.common.session.UserSession.authenticate(Unknown Source)
    esq.modules.user.LogonManager.doLogin(Unknown Source)
    org.apache.jsp.include.do_005flogin_jsp._jspService(do_005flogin_jsp.java:404)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.

  • Servlet.service() Error. java.lang.OutOfMemoryError: Java heap space

    Hi All,
    I would be very grateful if you would draw some light for this error I got from running a online database connected image viewer (applet).
    The application is quite simple, applet connect to servlet, servlet send 3 SQL statements to MySQL and retrieve image info (Strings) and 50 Files (- JPEG image) from a online database, and then pass all of data to applet from servlet. The size of total of images is around 3.5 MB, and I've increased JVM memory to 128 MB by using code "-xmx128m".
    ? Do I need send images from servlet to applet individually rather than push them in one go
    ? Is there memory leak in my codes
    Please see the codes below:
    private ExamViewerApplet.CaseInfo[] getCaseInfoArray(int examID, Connection conn) throws SQLException{...}   
    private ExamViewerApplet.ExamInfo getExamInfo(int examID, Connection conn) throws SQLException{...}
    private String processObject(Object object, ObjectOutputStream oos)    {
        Integer examID = (Integer) object;
        Connection conn  = null;    
        ExamViewerApplet.ExamInfo examInfo = null;
        ExamViewerApplet.CaseInfo caseInfoArray[] = null;
        int[][] imageIndexArray = new int[30][5];
        ImageIcon[] imageArray = null;
        try {
            conn = new DBConnection().getConnection();
            examInfo = this.getExamInfo(examID, conn);
            caseInfoArray = this.getCaseInfoArray(examID, conn);
            PreparedStatement ps = conn.prepareStatement(RETRIEVE_IMAGES);
            ps.setInt(1,examID);
            ResultSet rs = ps.executeQuery();
            rs.last();
            int size = rs.getRow();
            rs.beforeFirst();
            imageArray = new ImageIcon[size];
            int imageIndex = 0;
            while(rs.next()){
                int caseID = rs.getInt("CaseID");
                int imageID = rs.getInt("ImageID");
                InputStream stream = null;
                ByteArrayOutputStream output = null;
                try {
                    stream = rs.getBinaryStream("Image");
                    output = new ByteArrayOutputStream();
                    byte buf[] = new byte[1024];
                    int len;
                    while((len = stream.read(buf)) > 0){
                        output.write(buf, 0, len);
                    ImageIcon icon = new ImageIcon(output.toByteArray());
                    imageArray[imageIndex] = icon;
                    imageIndexArray[caseID][0] += 1;
                    imageIndexArray[caseID][imageID] = imageIndex;
                    ++imageIndex;
                } catch (IOException ex) {
                    log("Error, when reading byte array from image input stream from database");
                } finally{
                    try {
                        stream.close();
                        output.close();
                    } catch (IOException ex) {
                        log("Error, when tring to close image input stream from Database");
        } catch (ClassNotFoundException classNotFoundException) {//somecode...
        } catch (SQLException sQLException) {//somecode...
        }finally{
            try {
                conn.close();
            } catch (SQLException ex) {//somecode...
        String result;
        if(examInfo != null && caseInfoArray != null && imageIndexArray != null && imageArray != null ){
            result = "The transaction was successed!";
            try {
                oos.writeObject(examInfo);
                oos.writeObject(caseInfoArray);
                oos.writeObject(imageIndexArray);
                oos.writeObject(imageArray);
            } catch (IOException ex) {
                result = "The transaction was failed!";
        }else{
            result = "The transaction was failed!";
        return result;
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {      
        ObjectInputStream inputStreamFromApplet = null;
        Object object = null;
        try {
            inputStreamFromApplet = new ObjectInputStream(request.getInputStream());
            object = inputStreamFromApplet.readObject();
            ObjectOutputStream oos = new ObjectOutputStream(response.getOutputStream());
            String returnValue = this.processObject(object, oos);           
            oos.writeObject(returnValue);
            oos.flush();
            oos.close();       
        } catch (ClassNotFoundException classNotFoundException) {
            classNotFoundException.printStackTrace();
        } finally{            
            inputStreamFromApplet.close();
    } And the error messages I got here is:
    SEVERE: Servlet.service() for servlet ExamViewerServlet threw exception
    java.lang.OutOfMemoryError: Java heap space
            at javax.swing.ImageIcon.writeObject(ImageIcon.java:411)
            at sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:592)
            at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)
            at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
            at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
            at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
            at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1251)
            at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
            at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
            at ExamViewerServlet.processObject(ExamViewerServlet.java:147)
            at ExamViewerServlet.processRequest(ExamViewerServlet.java:176)
            at ExamViewerServlet.doPost(ExamViewerServlet.java:217)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
            at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
            at java.lang.Thread.run(Thread.java:595)Please help.
    Linqing
    Edited by: discovery_java on Feb 1, 2010 2:12 PM

    wire the code into a simple unit test, then run a profiler on it to see where the memory is going. You need the help of these kind of tools to track down memory issues, before that it is only guesswork what might be soaking it all up.

  • How do I stop "Exception in thread "main" java.lang.OutOfMemoryError.java heap space

    I'm trying to rebuild my iPhone app, with hires graphics etc, using CS6 Flash Pro. However, I get this now,
    Exception in thread "main" java.lang.OutOfMemoryError.java heap space .....  followed by a lot of location information related to the error.
    Now, how do I increase the java memory allowances if that's the problem. I've already upp the jvm.ini file from 128 to 512. No difference.
    I'm based on
    Win8, 8GB RAM, x64
    I'm obviously asking it to load a lot of resources - but hey, Flahs should be able to handle it right?
    thanks if anyone can help

    Hmmm. Maybe I was doing something wrong with images, and icons. I'm not sure, as it's not at all clear really.
    This is the Icons screen from CS6, can't see the files above 512x512unless scrolling up - 29x29,57x57,114x114.  no matter.
    So - after reading and rereading the Apple specs and directions, I removed the 512x512 and the 1024x1024 images from the Icons list that get pulled in during build.
    Next, I again re-read the Apple directives, and put the required files for the build into the base directory of the build, as per this image.
    In actual fact - I can probably leave out the last two. iTunesArtwork.xxx But I don't know, because it is entirely unclear on that point. I can find no directive regarding this at all.
    Do I upload them myself? Probably? I don't know.
    HOWEVER.
    The build now completes. Java, or something, was very confused about finding that file called 1024x1024.png in the build list, and would not do it.
    Take it out of icons, built fine. Put it in the icons directory, and crash...
    Now - with the setup I am using, it all builds fine for ipad and iphone, in all resolutions.
    I don't know what the problem is with what Java is seeing, but this fixes it it seems.
    Hope that helps anyone else.
    cheers

  • Java outputstream java.lang.OutOfMemoryError: Java heap space

    Hi All,
    I am trying to publish a large video/image file from the local file system to an http path, but I run into an out of memory error after some time...
    here is the code
    public boolean publishFile(URI publishTo, String localPath) throws Exception {
            InputStream istream = null;
            OutputStream ostream = null;
            boolean isPublishSuccess = false;
            URL url = makeURL(publishTo.getHost(), this.port, publishTo.getPath());
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            if (conn != null) {
                try {
                    conn.setDoOutput(true);
                    conn.setDoInput(true);
                    conn.setRequestMethod("PUT");
                    istream = new FileInputStream(localPath);
                    ostream = conn.getOutputStream();
                    int n;
                    byte[] buf = new byte[4096];
                    while ((n = istream.read(buf, 0, buf.length)) > 0) {
                        ostream.write(buf, 0, n); //<--- ERROR happens on this line.......???
                    int rc = conn.getResponseCode();
                    if (rc == 201) {
                        isPublishSuccess = true;
                } catch (Exception ex) {
                    log.error(ex);
                } finally {
                    if (ostream != null) {
                        ostream.close();
                    if (istream != null) {
                        istream.close();
            return isPublishSuccess;
        }HEre is the error i am getting...
    Exception in thread "Thread-8773" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2786)
            at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:94)
            at sun.net.www.http.PosterOutputStream.write(PosterOutputStream.java:61)
            at com.test.HTTPClient.publishFile(HTTPClient.java:110)
            at com.test.HttpFileTransport.put(HttpFileTransport.java:97)Edited by: ashchawla on Jan 17, 2010 9:21 AM

    It seems that the HttpURLConnection tries to buffer all the data you want to send and doesn't stream the data as it comes.
    This means that you will need at least as much memory as the size of your file (more likely you'll need quite a bit more). This is definitely not ideal for sending huge files, so you might want to look at other HTTP clients, if they are better at handling huge files.
    Try the Apache Commons HTTPClient. I've heard good things about it.
    Thanks for crossposting. You will not get any more help from me. Not here, not on SO.

  • Getting OutofMemoryError: Java heap space - expected best solution

    Hi Friends,
    Through Eclipse Editor, i am running a program whith reads one XML (one format) file and generates another XML file (in another format) based on requirement.
    Basically it is conversion of Data from one XML to another XML. Because of the target file is having approx. 4000KB(expected memory) this leads a out of memory exception.
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at org.jdom.ContentList.getView(ContentList.java:399)
    at org.jdom.Element.getChildren(Element.java:1408)
    at com.xenos.transform.kernel.ov.Rj(Unknown Source)
    at com.xenos.transform.kernel.ov.Fh(Unknown Source)
    at com.xenos.transform.kernel.ov.qj(Unknown Source)
    at com.xenos.transform.kernel.jv.bj(Unknown Source)
    at com.xenos.transform.kernel.ov.bj(Unknown Source)
    at com.xenos.transform.kernel.input.InputHandler.endElement(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
    at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.xenos.transform.parser.sn.parse(Unknown Source)
    at com.xenos.transform.kernel.ev.transform(Unknown Source)
    at com.xenos.transform.kernel.ev.transform(Unknown Source)
    at com.navis.lte.ExpressXMLTransorms.SourcexmlToTargetXML(ExpressXMLTransorms.java:64)
    at com.navis.lte.ExpressXMLTransorms.main(ExpressXMLTransorms.java:36)
    So, Please suggest me how to resolve this problem.
    Thanks in advance
    Madhava Rayalu

    Hmm...
    Eclipse Editor .... let me think..... could be a problem with Eclipse then ... :0
    Try an Eclipse forum!
    Timo

  • XMLReader :  java.lang.OutOfMemoryError: Java heap space

    I'm using a XMLReader object to Parse XML files. About 20000 XML documents need to be parsed, so the parse(...) method is called about 20000 times in a loop.
    The XML string to be parsed are all about 2500 bytes long. Java 1.5 is used.
    import java.io.StringReader;
    import org.xml.sax.XMLReader;
    private final XMLReader parser;
    private StringReader stringReader;
    public void myParseMethod(final String xml) {          
    try {
    stringReader = new StringReader(xml);
    parser.parse(new InputSource(stringReader));
    stringReader.close();
    } catch (final SAXParseException e) {
    } catch (final SAXException e) {
    } catch (final IOException e) {
    Calling the method myParseMethod(final String xml) goes well till about 2000 times. Then the following exception is thrown:
    java.lang.OutOfMemoryError: Java heap space
    at java.io.BufferedWriter.<init>(Unknown Source)
    at java.io.BufferedWriter.<init>(Unknown Source)
    at java.io.PrintWriter.<init>(Unknown Source)
    at java.io.PrintWriter.<init>(Unknown Source)
    at com.sun.org.apache.xerces.internal.util.DefaultErrorHandler.<init>(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.<init>(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.<init>(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.<init>(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.validation.xs.InsulatedSchemaValidator.<init>(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.validation.xs.SchemaImpl.newXNIValidator(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.validation.XercesSchema._newValidatorHandler(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.validation.XercesSchema.newValidatorHandler(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.JAXPConfiguration.configurePipeline(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    Many thanks for help,
    Frank
    Edited by: 863908 on Jun 6, 2011 8:09 AM
    Edited by: 863908 on Jun 6, 2011 8:11 AM

    Badly written code? Look into the Xerces API and you'll find out that I'm using the XML parser the normal way.Not at all. Those APIs deal with any stream. You have gone to a whole lot of extra and unnecessary trouble and expense to read the entire file, probably accumulate it into a StringBuffer, convert that to a String, and create a StringReader around it. Or else you have read the entire file into a char[] array and created a String directly from that. This strategy creates not one but two copies of the entire file in memory, and also wastes time. The normal way is to wrap an InputSource around a FileReader or InputStreamReader, probably with a BufferedReader in between. End of all that pointless and badly written code, end of the two copies of the file in memory, end of the wasting of time, and end of your memory problems too.
    Full stop.

Maybe you are looking for

  • Word 2007 "Save as Adobe PDF" - Pictures not showing up in PDF

    Good Afternoon, I have run into this error recently when using the "Save as Adobe PDF" to publish Word 2007 report. Each report has an table - pasted from Excel 2007 "as a picture - when printed". The reports have a ton of other jpg pictures. After c

  • Field name change

    We have changed the field name in CMOD, Goto->Text enhancements->Keywords->change->, for USERF1_TXT. In ESLL it shows the changes but in the transaction those changes are not reflected. Edited by: Alex on Aug 2, 2010 12:15 PM

  • Oracle XE on Windows x64

    Hello, is possible to install Oracle Express Edition on Windows x64 ? When I try to install I get error "Error: 1719 The Windows Installer Service could not be acessed"

  • Adobe DNG Converter 7.4

    I downloaded Adobe DNG Converter 7.4 to upgrade Elements 10 to accept RAW files from my Nikon D7100 but it won't. The reason given is: The file format is damaged or is in a format that cannot be included in Elements Organizer. It does accept jpg file

  • Administration console on HTTP adaptor

    Hi, I have an existing application which is managed through JMX http connector shipped with sun's reference implementation. Now i am evaluating weblogic and want to manage it through the same connector (and donot want to use the weblogic's admin cons