This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 228623

Summary: Don't block the Debugger until all watches/variables are evaluated
Product: debugger Reporter: crazyjavahacking
Component: JavaAssignee: Martin Entlicher <mentlicher>
Status: NEW ---    
Severity: normal CC: markiewb
Priority: P3 Keywords: PERFORMANCE
Version: 7.4   
Hardware: PC   
OS: Windows XP   
See Also: https://netbeans.org/bugzilla/show_bug.cgi?id=212619
Issue Type: DEFECT Exception Reporter:

Description crazyjavahacking 2013-04-16 13:59:14 UTC
Don't block thee Debugger until all watches/variables are evaluated! This becomes after some time very serious usability issue.

I am working on quite big Maven Java SE multimodule project and after some debugging time it is just blocking the UI after pretty much every debugger step! The UI is not responding until all variables/watches are evaluated. This is very unlikely related to GC as I am never using more than 350MB from 500MB of heap. After closing Watches and Variables windows, the IDE is responsive again.

This makes NetBeans almost unusable. At least there could be an option for that in Options. I would rather wait for evaluation after I really need in every debugger step.

applies to both:
NetBeans 7.3              & JDK 6u29
NetBeans Dev 201304152301 & JDK 7u3
Comment 1 crazyjavahacking 2013-04-16 14:00:46 UTC
Correction: "I would rather wait for evaluation after I really need it than in every debugger step."
Comment 2 crazyjavahacking 2013-04-16 14:17:09 UTC
It looks like that the internal structure of objects is partially causing this problem. There are quite many fields and many of them are of the same type, arrays or collections of the same type.

I assume that as part of the evaluation of any object/variable/watch, all fields are evaluated recursively. Then in this situation the complicated internal structure is causing the latency (which is about 5 seconds on my machine).

Would be nice if there would be an option to only evaluate first level of fields, e.g. not collections, arrays, or any other object fields. Or ability to set the evaluation level to some constant.
Comment 3 Martin Entlicher 2013-04-18 12:03:45 UTC
There were already applied changes to make stepping as fast as possible in issue #186517.
I'll try to check if we can do something more. Once an evaluation is started, it can not be canceled and we need to wait till it's processed. Maybe we can do less parallelism and also try to stop evaluation of variable formatters sooner.
Comment 4 Martin Entlicher 2013-08-21 13:56:12 UTC
I've found this to be too risky to make changes to the evaluation process into NetBeans 7.4.
If you click on "Open Formatters Option" icon on the left side in Variables window, you can uncheck any formatters, that are expensive for you.

I'm scheduling this for the next release, to evaluate more points where we could break the evaluation and possibly stop also running formatters.