This discussion is archived
6 Replies Latest reply: Sep 8, 2013 11:11 AM by JP_1442650 RSS

java.lang.OutOfMemoryError: Java heap space on page with Tabular form, bug?

JP_1442650 Newbie
Currently Being Moderated
Oracle 10.2.0.5
Apex 4.2 and 4.1 (tested on two environments)
Apex listener 1.1.3 and 1.1.4
IE, Chrome, FF

I have a page with some page items, and a tabular form with some editable fields.
In case the tabular form has more than about 100 rows, apex will jump to page http://server:port/apex/wwv_flow.accept upon submit (click 'Apply changes').

Finally I found following message in the server.log file under my listener:

[#|2013-02-03T08:28:02.915+0100|WARNING|glassfish3.1.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=76;_ThreadName=Thread-2;|StandardWrapperValve[HttpEndPoint]: PWC1406: Servlet.service() for servlet HttpEndPoint threw exception
java.lang.OutOfMemoryError: Java heap space
     at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:148)
     at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:1007)
     at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1315)
     at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)
     at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3677)
     at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4714)
     at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1374)
     at sun.reflect.GeneratedMethodAccessor57.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:601)
     at oracle.ucp.jdbc.proxy.StatementProxyFactory.invoke(StatementProxyFactory.java:242)
     at oracle.ucp.jdbc.proxy.PreparedStatementProxyFactory.invoke(PreparedStatementProxyFactory.java:124)
     at oracle.ucp.jdbc.proxy.CallableStatementProxyFactory.invoke(CallableStatementProxyFactory.java:101)
     at $Proxy124.execute(Unknown Source)
     at oracle.dbtools.apex.OWA.execute(OWA.java:119)
     at oracle.dbtools.apex.ModApex.handleRequest(ModApex.java:177)
     at oracle.dbtools.apex.ModApex.doPost(ModApex.java:128)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
     at oracle.dbtools.rt.web.HttpEndpointBase.defaultServlet(HttpEndpointBase.java:133)
     at oracle.dbtools.rt.web.HttpEndpointBase.service(HttpEndpointBase.java:90)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
     at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
     at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
     at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
     at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
     at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
     at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
|#]


Now, I can reduce the max number of rows in my tabular form (although the users don't like that very much, because is much easier to find a row with a bit of scrolling then clicking 'next page' every time).

Can I change the memory settings for java?
But this behaviour is a bug I suppose? At least I would expect an error message within the browser to tell the user they hit a memory limit.

Edited by: JP_1442650 on 03-Feb-2013 01:41
  • 1. Re: java.lang.OutOfMemoryError: Java heap space on page with Tabular form, bug?
    Colm Divilly Journeyer
    Currently Being Moderated
    JP, Thank you for your report, would it be possible for you to deploy your application on apex.oracle.com, so that we can attempt to reproduce, or failing that could you create a standalone test case application with just the problem page in it, that we can use to try diagnose the root cause?

    Thanks,
    Colm
  • 2. Re: java.lang.OutOfMemoryError: Java heap space on page with Tabular form, bug?
    JP_1442650 Newbie
    Currently Being Moderated
    Hi Colm,

    Thanks for you reply.
    I uploaded my application to apex.oracle.com, but sofar I can't reproduce the same problem there.

    I guess apex.oracle.com is using listener 2.0, I'm still on 1.1.4. (also because I only got blank pages on my test environment with listener 2.0, but that's another thread).
  • 3. Re: java.lang.OutOfMemoryError: Java heap space on page with Tabular form, bug?
    Colm Divilly Journeyer
    Currently Being Moderated

    Thanks JP, Could you point me at the application on apex.oracle.com, with steps to navigate to the page where the error occurred, we believe we may have fixed the issue, but would like a test case to confirm.

    If you prefer you can email me, colm <dot> divilly <at> oracle <dot> com

    Thanks,
    Colm

  • 4. Re: java.lang.OutOfMemoryError: Java heap space on page with Tabular form, bug?
    Nattu Explorer
    Currently Being Moderated

    Hi JP,

     

    Oracle 11g

    Apex 4.2.1 and Apex 4.2.2.

    Apex listener 2.1

     

    I get the same issue with the tabular forms now. Did you get any solution for the issue, if so can you please update this thread?

     

     

    Regards,

     

    Natarajan

  • 5. Re: java.lang.OutOfMemoryError: Java heap space on page with Tabular form, bug?
    Colm Divilly Journeyer
    Currently Being Moderated

    Hi Nattu,

    can you provide a test case application to help reproduce this issue, we have had a few similar reports, but have been unable to identify a reliable test case to reproduce the problem. The problem can be worked around by increasing the maximum Java heap size (e.g. java -Xmx1024m), or by changing the APEX application to reduce the number of tabular rows displayed.


    If you are able to provide a test application please upload it to apex.oracle.com (note the problem will probably not reproduce there, due to the large amounts of heap available), and let me know the workspace id, app id and credentials


    Thanks,

    Colm

  • 6. Re: java.lang.OutOfMemoryError: Java heap space on page with Tabular form, bug?
    JP_1442650 Newbie
    Currently Being Moderated

    Sorry for the slow reply.

     

    @Colm, sorry, I didn't use the workspace on apex.oracle.com for a long time, it got purged..

     

    After my original post, I upgraded to apex 4.2.2.

    Previously I limited the tabular form to 100 rows in my app, if I increase to 300 I get an "Too many arguments passed in. Got XXX parameters. Upper limit is 2000" error (whole text page with details see below). So I couldn't repeat the original Java heap error with more rows.

     

    Now, while testing, I find that I can increase my tabular form to limit to 140 rows without getting the 'Too many arguments' error.

     

    Thanks, JP

     

     

    Sun, 8 Sep 2013 18:00:06 GMT

     

    Too many arguments passed in. Got 2007 parameters. Upper limit is 2000

      DAD name: ANT

      PROCEDURE : wwv_flow.accept

      URL : http://by-spieu.XXX.com:4443/pls/ANT/wwv_flow.accept

      PARAMETERS :

      ===========

     

      ENVIRONMENT:

      ============

      PLSQL_GATEWAY=WebDb

      GATEWAY_IVERSION=3

      SERVER_SOFTWARE=Oracle-Application-Server-10g/10.1.2.0.0 Oracle-HTTP-Server

      GATEWAY_INTERFACE=CGI/1.1

      SERVER_PORT=4443

      SERVER_NAME=XXX.com

      REQUEST_METHOD=POST

      QUERY_STRING=

      PATH_INFO=/wwv_flow.accept

      SCRIPT_NAME=/pls/ANT

      REMOTE_HOST=

      REMOTE_ADDR=10.211.18.139

      SERVER_PROTOCOL=HTTP/1.1

      REQUEST_PROTOCOL=HTTPS

      REMOTE_USER=APEX_PUBLIC_USER

      ORACLE_SSO_USER=

      OSSO_IDLE_TIMEOUT_EXCEEDED=

      OSSO_USER_GUID=

      HTTP_CONTENT_LENGTH=24316

      HTTP_CONTENT_TYPE=application/x-www-form-urlencoded

      HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3; Tablet PC 2.0)

      HTTP_HOST=by-spieu.bayer-ag.com:4443

      HTTP_ACCEPT=image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*

      HTTP_ACCEPT_ENCODING=gzip, deflate

      HTTP_ACCEPT_LANGUAGE=nl-NL

      HTTP_ACCEPT_CHARSET=

      HTTP_COOKIE=WMDB=ORA_WWV-5sa+qcHj9JPBdubJszQb3nf9; LOGIN_USERNAME_COOKIE=exclp

      HTTP_IF_MODIFIED_SINCE=

      HTTP_REFERER=https://by-spieu.XXX.com:4443/pls/ANT/f?p=102:56:14766673009549::NO::P56_STRIP_ID:1169885

      HTTP_SOAPACTION=

      HTTP_ORACLE_ECID=1378663206:10.190.175.119:31640:0:22160,0

      HTTP_ORACLE_CACHE_VERSION=

      HTTP_AUTHORIZATION=

      WEB_AUTHENT_PREFIX=

      DAD_NAME=ANT

      DOC_ACCESS_PATH=docs

      DOCUMENT_TABLE=wwv_flow_file_objects$

      PATH_ALIAS=

      REQUEST_CHARSET=AL32UTF8

      REQUEST_IANA_CHARSET=UTF-8

      SCRIPT_PREFIX=/pls

      HTTP_IF_MATCH=

      HTTP_CACHE_CONTROL=

      SOAP_BODY=

      HTTP_X_ORACLE_DEVICE_CLASS=

      HTTP_X_ORACLE_DEVICE_ORIENTATION=

      HTTP_X_ORACLE_DEVICE_MAXDOCSIZE=

      HTTP_X_ORACLE_DEVICE=

      HTTP_X_ORACLE_ORIG_ACCEPT=

      HTTP_X_ORACLE_ORIG_USER_AGENT=

      HTTP_X_ORACLE_USER_LOCALE=

      HTTP_X_ORACLE_USER_NAME=

      HTTP_X_ORACLE_USER_DISPLAYNAME=

      HTTP_X_ORACLE_USER_USERKIND=

      HTTP_X_ORACLE_USER_AUTHKIND=

      HTTP_X_ORACLE_USER_DEVICEID=

      HTTP_X_ORACLE_USER_LOCATION_ADDRESSLINE1=

      HTTP_X_ORACLE_USER_LOCATION_ADDRESSLINE2=

      HTTP_X_ORACLE_USER_LOCATION_ADDRESSLASTLINE=

      HTTP_X_ORACLE_USER_LOCATION_BLOCK=

      HTTP_X_ORACLE_USER_LOCATION_CITY=

      HTTP_X_ORACLE_USER_LOCATION_COMPANYNAME=

      HTTP_X_ORACLE_USER_LOCATION_COUNTY=

      HTTP_X_ORACLE_USER_LOCATION_STATE=

      HTTP_X_ORACLE_USER_LOCATION_POSTALCODE=

      HTTP_X_ORACLE_USER_LOCATION_POSTALCODEEXT=

      HTTP_X_ORACLE_USER_LOCATION_COUNTRY=

      HTTP_X_ORACLE_USER_LOCATION_TYPE=

      HTTP_X_ORACLE_USER_LOCATION_X=

      HTTP_X_ORACLE_USER_LOCATION_Y=

      HTTP_X_ORACLE_SERVICE_HOME_URL=

      HTTP_X_ORACLE_SERVICE_PARENT_URL=

      HTTP_X_ORACLE_HOME_URL=

      HTTP_X_ORACLE_MODULE_CALLBACK_URL=

      HTTP_X_ORACLE_MODULE_CALLBACK_LABEL=

      HTTP_X_ORACLE_CACHE_USER=

      HTTP_X_ORACLE_CACHE_SUBID=

      HTTP_X_ORACLE_CACHE_AUTH=

      HTTP_X_ORACLE_CACHE_DEVICE=

      HTTP_X_ORACLE_CACHE_LANG=

      HTTP_X_ORACLE_CACHE_ENCRYPT=

      HTTP_X_ORACLE_ASSERT_USER=

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points