OK, "heavy" editing and debugging means: Working on four new packages. add new code, modify existing code, execute and debug methods from test cases for some hours. By the way, I used Toad 9.6 and 12.10 on exactly the same task like I described, with the same DB connection, so I think, a comparison makes sense. And Toad 9.6 never goes over 800 MB Working Set (WS)
The situation now is:
- I start with some hundred MB WS (IIRC both the values for Virtual Size (VS) and WS are mostly rather close to each other, I don't know whether this has any meaningor whether this is quite natural. From the DEBUG info: "Page File Usage (Virtual Memory): 380 MB, Working Set Usage (RAM): 387 MB"
- Then, with time, the WS and VS values increase slowly until WS reaches 1.9 GB (VS is then 2.1 or 2.2). I set DEBUG=1 in Toad.ini, the QP5 Trace directory produced is more than 3 Gig, the zipped size is about 800 MB, and there's also a file named "qsetrace.log" in the "Toad 12.10 trial"\"User Files" folder, but I think this was created when I executed a script with SQL*Plus. I used the following switches in Toad.ini. section [SETTINGS]:
Debug=1
LogActivities=1
ScriptDebug=1
VCPDebug=1
I think these were a little bit too many Debug switches [:D], so I reverted to Debug=1 alone for the next session and hope, it will generate less data. Then, after some 5 or 6 hours, Toad froze again, it's always the same scenario: I hit F9 to test compile a package or package body I changed, and Toad would never return from that. it just sits there doing nothing, with a WS of 1.9 GB, a VS of >2 GB, consuming no CPU or RAM any more.
You can see the development thru time by "grepping" the string "WS" from the trace<Pid>.<Number>.txt files in the "QP5 Trace" folder. You will see the Working Set increasing slowly but surely until it reaches 1.9 GB. I'm afraid, Toad has no opportunity to log anything in this situation, since it seems not to consume any CPU ressources
The next-to-last Trace File ends with
+ 04:15:27 QP5_CLS_DELETE { chunklist 0x1d811450, 0, 0 }
- thread 16620 (40ec), UTF-16
- HANDLE: chunklist addr 0x1d811450
- language 10 ORA
- terminator_string ';'
- double_quoted_identifier 'true'
- decimal_point_is_comma 'false'
- string_delimiter ''
- parameter_marker_prefix ''
- parameter_marker_suffix ''
- parameter_marker_escape ''
- commented_batch_terminator_enabled 'false'
- LPTR: 0
- LPTR2: 0
- WS 1965152 KB (app -5334628)
+ 04:15:27 end QP5_CLS_DELETE
- thread 16620 (40ec), UTF-16
- RC: 0
- cpu 4226 ns [TRCFILE: 5490*ms cpu, 22**s elapsed, 24 %] [RUN: 578**s cpu, 4501**s elapsed, 12 %]
WS 1965152 KB (QP5 +6912084)
+ 04:15:27 QP5_SHL_DELETE { shell 0x625833d0, 0, 0 }
- thread 16620 (40ec), UTF-16
- HANDLE: shell addr 0x625833d0
- language 10 ORA
- terminator_string ';'
- double_quoted_identifier 'true'
- decimal_point_is_comma 'false'
- string_delimiter ''
- parameter_marker_prefix ''
- parameter_marker_suffix ''
- parameter_marker_escape ''
- user_batch_regexp ''
- commented_batch_terminator_enabled 'false'
- LPTR: 0
- LPTR2: 0
- WS 1965152 KB (app -5334628)
+ 04:15:27 end QP5_SHL_DELETE
- thread 16620 (40ec), UTF-16
- RC: 0
- cpu 604 ns [TRCFILE: 5490*ms cpu, 22**s elapsed, 24 %] [RUN: 578**s cpu, 4501**s elapsed, 12 %]
WS 1965152 KB (QP5 +6912084)
***** File close report*****
During this trace file QP5 consumed -99944 KB of memory
During this trace file the application consumed 96532 KB of memory
+ 04:16:03 Closing trace file: and reopening a new trace file, due to last call to QP5 more than 10 seconds ago
The Trace*.summary.txt file is too big to open it in an editor, so it's very tedious to handle. The file created as the very last one in the Trace folder, that is, the one with the newest time stamp, ends like this:
+ 04:15:27 QP5_CLS_DELETE { chunklist 0x1d811450, 0, 0 }
- thread 16620 (40ec), UTF-16
- HANDLE: chunklist addr 0x1d811450
- language 10 ORA
- terminator_string ';'
- double_quoted_identifier 'true'
- decimal_point_is_comma 'false'
- string_delimiter ''
- parameter_marker_prefix ''
- parameter_marker_suffix ''
- parameter_marker_escape ''
- commented_batch_terminator_enabled 'false'
- LPTR: 0
- LPTR2: 0
- WS 1965152 KB (app -5334628)
+ 04:15:27 end QP5_CLS_DELETE
- thread 16620 (40ec), UTF-16
- RC: 0
- cpu 4226 ns [TRCFILE: 5490*ms cpu, 22**s elapsed, 24 %] [RUN: 578**s cpu, 4501**s elapsed, 12 %]
WS 1965152 KB (QP5 +6912084)
+ 04:15:27 QP5_SHL_DELETE { shell 0x625833d0, 0, 0 }
- thread 16620 (40ec), UTF-16
- HANDLE: shell addr 0x625833d0
- language 10 ORA
- terminator_string ';'
- double_quoted_identifier 'true'
- decimal_point_is_comma 'false'
- string_delimiter ''
- parameter_marker_prefix ''
- parameter_marker_suffix ''
- parameter_marker_escape ''
- user_batch_regexp ''
- commented_batch_terminator_enabled 'false'
- LPTR: 0
- LPTR2: 0
- WS 1965152 KB (app -5334628)
+ 04:15:27 end QP5_SHL_DELETE
- thread 16620 (40ec), UTF-16
- RC: 0
- cpu 604 ns [TRCFILE: 5490*ms cpu, 22**s elapsed, 24 %] [RUN: 578**s cpu, 4501**s elapsed, 12 %]
WS 1965152 KB (QP5 +6912084)
***** File close report*****
During this trace file QP5 consumed -99944 KB of memory
During this trace file the application consumed 96532 KB of memory
+ 04:16:03 Closing trace file: and reopening a new trace file, due to last call to QP5 more than 10 seconds ago
[END OF FILE]
You can see a WS of 1965152 KB here and that "QP5 consumed -99944 KB of memory", which is quite funny. But I cannot see a hint describing that there was an exceptional situation.
So I will try and create another trace directory with just "Debug=1", so we can handle it's size, since I can't e-mail a 800 MB archive. Or are there single files or groupy of files from "QP5 Trace" you can use to analyse the situation ?
[quote user="Michael Staszewski"]
I don't know what you should be looking at inProcessExplorer. I pretty much have it set to defaultcolumns and have only looked at physical memory usage. I think the big observation is that Toad hangs after some time. If Toad degrades to the point that it is unusable then there's a problem. Normally you'd see an Out of Memoryexception thrown when Toad has consumed all memory available to it.
Not being a Toad user it's difficult for me to interpret what heavy editing and debugging means in every case and I don't have time to use Toad as if I were a user for long periods of time. I think it would be best if you could list exactly what editing and debugging means for you. What features inToad are you using? For example, editing to one may mean straight text modification without any use of additional features like Code Insight, Object Palette, Schema browser, describe window, etc. To another user editing could be the use of all of those features to look at table columns, PL/SQL parameters, etc. From your earlier description it looks like you're using the Probe API debugger where breakpoints are set, you step through code, evaluate watches, etc. To some debugging means DBMS Output statements and multiple runs of the code looking at output between each.
You said that Toad 9.6 did not have this problem so I assume that all is the same with your code and databasein your comparison. However, if you are on a different databasenow then I'd suggest leaving Toadin its hanging state and fire up a secondinstance of Toad to look at the database and see if there is a wait/lock or if the database is taxed. I don't know really what to suggest here because I'm not sure what you'd be looking for. Perhaps someone with DBA knowledge can offer some insight. Also when it's hanging have you left it alone for a bit to see what happens? Does it finish, throw an exception, just sit there? You can add DEBUG=1 to the [SETTINGS] section of Toad,ini and run Toadin this manner. When you get a hang there is a folder named QP5 Trace in your %APPDATA%\Dell\Toad for Oracle\12.10 folder. You can zip and send that to me offline to michaelStaszewskiquestwith.
[/quote]