Saturday, June 6, 2009

JDeveloper 11g IDE Performance Problem - Reproduced

2009/06/08 UPDATE: I got answer from Oracle, this problem is not reproduced anymore in their internal latest build.

2009/06/12 UPDATE: Additional Helpful workaround was posted on From Developers To Developers blog.

Our team have reproduced performance problem in JDeveloper 11g IDE while developing ADF applications. This problem seems so big, that it can crash JDeveloper 11g in 5 minutes by returning 'Low Memory Message'. In this post I will describe how to reproduce IDE performance problem and will provide sample application as test case. You can reproduce bug in latest JDeveloper 11g release - Build JDEVADF_MAIN.BOXER_GENERIC_090328.0229.5205. It was logged on Metalink in November 2008, but not fixed still (BUG 7601410).

You can download developed sample test case where you can reproduce 'Low Memory Message' in 5 minutes - ViewControllerPerformance.zip. Sample is really simple, it contains ADF BC from HR schema and one JSPX page, one entry in DataBindings.cpx.

When opening application in JDeveloper 11g, in the beginning IDE behaves normally, it consumes just as usual around 300 MB:


Here is structure of sample application, really nothing complex:


Nothing complex except two property bundle files - buttons.properties and labels.properties. Those files contain around 1000 entries each, and you will see now what problems it creates. Im using couple of entries from those files in main.jspx and just by opening this page I'm getting doubled memory usage up to around 800 MB:


I have tried to open just one Expression Builder on main.jspx:


And I got 1200 MB used in 3 minutes:


Same time I got 'Low Memory Message' in JDeveloper 11g IDE:


The reason for this is large property bundle files and how those files are referenced from JSPX page. When developer puts label from property file on the page, JDeveloper automatically creates following references:


Those references cause JDeveloper 11g IDE to consume memory heavily and run out of memory, especially when property bundle files are big.

If you will comment property bundle files referencing:


JDeveloper 11g IDE will behave as expected, without high memory usage:


I wish described IDE performance bug will be addressed and fixed in next JDeveloper 11g release.

Spanish Summary:

En este capitulo, Andrejus identifica un problema de rendimiento en la herramienta JDeveloper 11g. Se muestra un ejemplo que al ser ejecutada con la herramienta tiene un alto consumo de memoria. Afortunadamente, Andrejus ha enviado a ORACLE sus descubrimientos para una pronta soluciĆ³n del problema.

9 comments:

Milos said...

This is one of the best posts I read in quite some time. I am working in ADF 11g and I can only say that this is one of many problems my team encounters.
My experience is very similar, while using JDeveloper you will see a lot of LOW MEMORY MESSAGES.
But there is an interesting post from Shay Shmeltzer:
[quote]I haven't seen a situation where JDeveloper just throws a low memory error.[/quote]
I even have a link:
http://forums.oracle.com/forums/message.jspa?messageID=3475202#3475202
What to say about Shay, besides MAN YOU NEED REALITY CHECK :)))) ASK FOR A RAISE FROM ORACLE, YOU DESERVE IT. WE (DEVELOPERS) LOVE YOU FOR POSTING THAT AND SIMILAR STUPID POSTS.
Andrej, one more time, GREAT post and pls continue with good work.

Javisti said...

Only the truth with no cream or sugar!!!

At last an Oracle guy that is not afraid to point out the problems of JDeveloper.
Some day the rest of the Oracle family must realize that hiding and denying problems just do not help JDeveloper to be the best tool for Java Dev.

Very good post Andrejus!
Keep up the good job!

PS: Sorry for being a bit aggressive but I am also tired for not being believed for my low mem warns...

Seb said...

Reproduced on Mac OS X 10.5.7.

Pradip said...

superb post.. You really dissected the problem..Very nice

bjanko said...

Reproduced too on Vista64bit 4GB

bjanko said...

just playing around... seems like if you use f:loadBundle instead of c:set it solves this issue... but indeed it is a bug!

Andrejus Baranovskis said...

You are right.

Yes its a problem, because when developer puts labels on the page, those labels are referenced through c:set. Suddenly IDE performance is down and developer dont know the reason.

By default its not using f:loaBundle.

Regards,
Andrej

Malik said...

Very good article from such a senior figure.

We are working on massive project in Oracle. We have really hard time working on it...especially combination of ADE + JDeveloper in con-Fusion :-)

They really need look into Jdeveloper issues, especially performance related. In my experince Jdev only works fine with Demos not with huge projects.

If they keep on hiding these issues it would affect credibility of Oracle.

Euler Homero said...

Andrejus jdev11g because in the changed perspectives on applications to application? You can have several applications in the same way?