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 227115 - org.netbeans.modules.web.inspect.ui.CssStylesPanelProviderImpl.update: LowPerformance took 50219 ms.
Summary: org.netbeans.modules.web.inspect.ui.CssStylesPanelProviderImpl.update: LowPer...
Status: RESOLVED FIXED
Alias: None
Product: web
Classification: Unclassified
Component: Inspection (show other bugs)
Version: 7.3
Hardware: All All
: P3 normal (vote)
Assignee: Jan Stola
URL:
Keywords: PERFORMANCE
Depends on:
Blocks:
 
Reported: 2013-03-06 16:36 UTC by Exceptions Reporter
Modified: 2013-03-15 11:12 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter: 198962


Attachments
nps snapshot (59.46 KB, application/nps)
2013-03-06 16:36 UTC, Exceptions Reporter
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Exceptions Reporter 2013-03-06 16:36:32 UTC
Build: NetBeans IDE 7.3 (Build 201302132200)
VM: Java HotSpot(TM) Client VM, 23.7-b01, Java(TM) SE Runtime Environment, 1.7.0_15-b03
OS: Windows XP
Maximum slowness yet reported was 50219 ms, average is 36735
Comment 1 Exceptions Reporter 2013-03-06 16:36:34 UTC
Created attachment 132282 [details]
nps snapshot
Comment 2 Jan Stola 2013-03-14 14:49:21 UTC
There are two snapshots attached to this issue by the slowness reporter by now.

The snapshot 660635 shows the event-dispatch thread blocked by waiting for PageInspectorImpl.LOCK lock in PageInspectorImpl.getPage() (for 12944ms). The lock is held by ExternalBrowserPlugin thread in PageInspectorImpl.inspectPage() for 13124ms.

The snapshot 663206 shows the even-dispatch thread blocked by waiting for
1) PageInspectorImpl.LOCK lock in PageInspectorImpl.getPage() (for 30113ms)
2) WebKitPageModel.this lock in WebKitPageModel.getSelectedNodes() (for 9986ms)

The PageInspectorImpl.LOCK lock is held by ExternalBrowserPlugin thread in PageInspectorImpl.inspectPage() for 40115ms.

The WebKitPageModel.this lock is held by
2.1) ExternalBrowserPlugin thread in WebKitPageModel.getDocumentNode()
     (for 5014m)
2.2) PageInspectorImpl thread in WebKitPageModel.getDocumentNode()
     (for 4986ms)

Summary:

PageInspectorImpl.getPage() is called from various places. Hence, it needs to be fast, i.e., we have to ensure that it is not blocked by PageInspectorImpl.LOCK that can be held by some thread for significant time.

WebKitPageModel.this shouldn't be held for long time. There are may methods synchronized on this lock that are called from various places and should be fast (like getSelectedNodes(), isSelectionMode() etc.) The only method that can block WebKitPageModel.this for long time is getDocumentNode() by now. It should be rewritten.