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 236966

Summary: OutOfMemoryError: GC overhead limit exceeded
Product: db Reporter: CadErik
Component: CodeAssignee: Libor Fischmeistr <lfischmeistr>
Status: RESOLVED WONTFIX    
Severity: normal    
Priority: P3    
Version: 7.4   
Hardware: All   
OS: All   
Issue Type: DEFECT Exception Reporter: 204473
Attachments: stacktrace

Description CadErik 2013-10-09 20:19:24 UTC
Build: NetBeans IDE 7.4 RC2 (Build 201309252201)
VM: Java HotSpot(TM) 64-Bit Server VM, 25.0-b50, Java(TM) SE Runtime Environment, 1.8.0-ea-b108
OS: Windows 8

User Comments:
CadErik: View Data with SQL Server jdbc driver




Stacktrace: 
java.lang.OutOfMemoryError: GC overhead limit exceeded
   at java.util.concurrent.LinkedBlockingQueue.offer(LinkedBlockingQueue.java:416)
   at org.netbeans.core.startup.logging.DispatchingHandler.publish(DispatchingHandler.java:80)
   at java.util.logging.Logger.log(Logger.java:652)
   at java.util.logging.Logger.doLog(Logger.java:673)
   at java.util.logging.Logger.log(Logger.java:783)
   at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2053)
Comment 1 CadErik 2013-10-09 20:19:26 UTC
Created attachment 140965 [details]
stacktrace
Comment 2 Jaroslav Tulach 2013-11-18 14:07:33 UTC
Moving to perf category. Does not seem to be RequestProcessor neither module system related.
Comment 3 Tomas Hurka 2013-11-20 09:49:49 UTC
Around 550M is taken by com.microsoft.sqlserver.jdbc.TDSReader#2 instance, while executing following SQL command:

select * from dbo.CanData
Comment 4 CadErik 2013-11-20 14:41:08 UTC
Ha! great find, I am not surprised. The SQL server JDBC driver seems determined to cache results and haven't found a way to disable that. 
If I find the parameters to disable that behavior, I'll post them here. It would be nice if they were defaults for SQL Server.
Comment 5 matthias42 2013-11-20 17:32:59 UTC
(In reply to CadErik from comment #4)
> Ha! great find, I am not surprised. The SQL server JDBC driver seems
> determined to cache results and haven't found a way to disable that.

This is a common scheme - the mysql driver works the same way.
 
> If I find the parameters to disable that behavior, I'll post them here. It
> would be nice if they were defaults for SQL Server.

Maybe this helps:

http://msdn.microsoft.com/en-us/library/ms378988.aspx


selectMethod
	

String

["direct"|"cursor"]
	

direct
	

If this property is set to "cursor," a database cursor is created for each query created on the connection for TYPE_FORWARD_ONLY and CONCUR_READ_ONLY cursors. This property is typically required only if the application generates very large result sets that cannot be fully contained in client memory. When this property is set to "cursor," only a limited number of result set rows are retained in client memory. The default behavior is that all result set rows are retained in client memory. This behavior provides the fastest performance when the application is processing all rows.