a) Dim strName as string
For i=0 to 100
strName=GetName()
do something with strname
Next
b) For i=0 to 100
Dim strName as string=GetName()
do something with strname
Next
Out of a and b which will be faster and consume less memory
Public sub GetResourceAttributes()
Dim colreSource as object
.using the colresource
colresource=nothing
end sub
Is sentencing'colresource =nothing'is good programming technique or is it enough to leave nothing done on 'colresource'. Like GC will take care of 'colresource' when there is no reference to the object.
Coming from more low-level languages like C++, and seeing how transparent .NET memory management is, I've got a concert about a piece a line of code I've written. In C++, every object necessarily (dictated design practices and peculiarities of memory management) needs to have a constructor and a destructor. In .NET, destructors aren't needed as often, and there are different patterns of when they are required and how to use them. My question is this. If I have the following like of code (in VB.NET, but equally applies to C#)
I have an application that requires the use of many threads. How do i monitor the memory consumption of my application?And how can i monitor the CPU usage of my application if possible?And is it possible to monitor the memory consumtion and CPU usage of each of these threads?And is it possible to limit or prioritize the memory consuption or cpu usage of the whole application or of each thread?
I have an application which I've developed which queries Active Directory information and stores about 15 properties into a Datatable which is kept in memory. I need to decrease the amount of "Commit" memory it is setting aside. The application stays active in the system tray and allows for quick searching of information along with pictures for users. I have a class, which is able keep memory usage down pretty low. It runs on a timer every 10 seconds and listed below:
I have 200,000 rows data need to be inserted into MSSQL 2005 express. I have 4G memory. From the beginning, there is 2.0G used. Then, I use microsoft text driver to load text file into datagridview. Memory rise to about 2.8 GB.I start write data row by row from datagrid view. Memory usage keep rising , then OutOfMemory exception is catched.I try to use GC.Collect and for System.Data.Odbc.OdbcConnection , I also try .Dispose(). But it is no use.How can I keeing the memory within about 3.0GB for this usage ? I monitor .vhost.exe. It rise to more than 1G.
I am reading from a log file.My target is to display the 10 most popular requested URL's of a website.One way to do this is to read all log entries and save each URL to a Dictionary. The dictionary has the URL as the Key and the number of visits as the Value. If a URL exists in the dictionary the Value of that URL's Key is increased +1, otherwise a new Key/Value pair is added with a value of 1.
Once the processing is finished the dictionary is sorted by Value and the top 10 entries are shown.This might work, however it could cause a serious memory problem when dealing with a log file of a website which has thousands of different page url's (think query strings).Since I only need the top 10 entries, is there a way to avoid placing all the URL's into memory and still get the top 10 URL + Visits count?
I have an application (i've been working on for a long time) that has many tabs and controls and quite a few components And a good deal of design code. And a list box that has around 100k items (i had to put a loader to pass the 3-4 seconds while its loading to prevent it from not-responding)I had a few Gc.collect calls in specific places (mostly after many items are added or removed). When my application loads, i call GC.collect only once at the end of the load. The program consumes around 35K memory by the time its loaded. However, i decided to mess around abit (don't worry i made backups)First i started putting gc.collect in some random places, and to my surprise the memory upon loading was observably decreasing. Then I went ahead and put a macro that puts GC.Collect before every End Sub, Exit Function, Exit Sub, and Return value, there is. Basically every block in my application had atleat one GC.Collect. I fixed some 6 or 7 silly replace errors and compiled. When the program launched, the memory used at the end of launch was 21K!
At first glance that seemed great, but then i realized switching between tabs was VERY glitchy. and adding new lists took around 10x more time than usual (the loader stayed on for around 20 seconds!) And even though the memory looked good, the program was useless like this.Then i decided to mess around differently. I removed GC.Collect from the entire solution. It was no longer called even once.At first glance, when i launched the app it consumed just under 60K memory. That seemed terrible. However i realized something: even though my program in that state showed on taskmanager that it was consuming alot more memory than usual, it seemed like it was lighter than ever! Switching tabs was faster than before, especially every time i go to the tab that has the listbox control with 100k items. Loading items took around 3-4 seconds, but there was no stutter when the list finished loading whereas before it had an evident 0.3s stutter after the items were added.
This was all surprising to me because i thought GC.Collect was first of all, something that it doesnt matter where or how many times you call it. I thought it was just something that should be called at the end of work and i didnt think it would matter if it was called during work.Second of all, i thought GC.Collect only affected resources that are inaccessible, or resources my program is done with. How come the application feels faster when i don't call it?Third of all, i thought the VB CLR does most of the memory cleaning for me, and that GC.Collect was somewhat of a redundant command. It didn't seem so redundant to me at all considering the difference between using it heavily and not using it at all was around 38K in memory usage!
So i guess my questions are: 1) Do I need to call GC.Collect? WhereWhen do i call it?2) Why does calling it affect performance? And where does one draw the line between that memory stat on taskmanager and the program's performance?3) I also decided to run a small test. Why does a blank vb form application require 10K memory? How accurate is that stat shown on the task manager?
I am trying to setup performance counters for CPU Usage and Memory Used.I would like a progress bar and a label to display the percentage.I have the below code and although it seems to be half working, there is something just not right.. The memory one seems to be working fine although the CPU one is acting strange.
I've been trying to get memory information from the OS by using Performance Counters. Memory performance information is available from the memory manager through the system performance counters. Right now, I'm working on getting the different types of Kernel Memory, but I'm having issues getting others as well. Through Performance Counters, I've been able to get Paged Virtual and Nonpaged Kernel memory.
The article I mentioned above does not explain how to get the Paged Physical Kernel Memory. It only gives the two I mentioned and the total, which is just the two combine and isn't the Paged Physical. The information isn't straight forward, so I'm using a third party application to compare my results so that I get the correct information. The article gives me Pool Paged Bytes Kernel memory and I found out that it is the Paged Virtual Memory.
I'm declaring this and others like so: [Code] I've researched several other methods, but I can't seem to get anywhere with anything else besides Performance Counters. To sum it up, I'm looking for a method to obtain the Paged Physical Kernel Memory.
I am trying to setup performance counters for CPU Usage and Memory Used.I would like a progress bar and a label to display the percentage.I have the below code and although it seems to be half working, there is something just not right.. The memory one seems to be working fine although the CPU one is acting strange.
Shared perfTotalMemory As New ComputerInfo Shared perfFreeMemory As New PerformanceCounter("Memory", "Available MBytes") Shared perfProcessorTime As New PerformanceCounter("Processor", "% Processor Time", "_Total")
i have a program using a select case to convert letters to special charaters. My question is how can I get the code to read upper and lower case letters without having to put the upper case letters in my select case statement. Example: Part of my code is
When my form loads it adds some handles (using AddHandler) to a sub (showStatus). What this sub does is checks which control activated the sub (using sender.Equals) and displays text in the status label (status) accordingly.For this I use an If...Then statement for each possibility. There are many possibilities and my code get cluttered. Is there a way to do the same thing with a Select...Case statement. I tried: Select Case sender Case tbOne : status.Text = "blahblahblahblahblahblah" End Selectwhere: tbOne is a textbox, status is a StatusLabelIt gives me an error though, saying "Operator '=' is not defined for types 'Object' and 'System.Windows.Forms.TextBox'."Any ideas on how I can get this to work with a select case statement?
Firstly Case 2 runs. Throws exception. And right after this debugger shows that next processed statement is Case Else. Only after Case Else throws own exception Catch block start working. I've never seen this trick. Why can this happened?I'm sure the block is entered once (not like this:first enter hit Case 2 and second hit Case Else).
Update:-To Matt Wilko. Thank you for answering. I've switch to Strict On in Options of VS2010 but nothing has changed. Command is variable, not function. Watch tool shows that on each step Command is the same ( Command = 2).
Fixed. Yeeaaaahhh. I simplefy code to Try Select Case 2 Case 2
[code]....
and change project to Console app. This works as I mention. The fix was in Release mode. I was debugging in Release mode. When I switch to Debug mode everything goes as it should.
In VB 2005, I am calling a C++ DLL function that returns the address in memory and size in bytes of a jpeg image. How can I load that jpeg image directly from memory into a picture box in my VB form? I cannot afford to save it to disk first.
Im getting a problem with one of my programs I have made in visual basic.NET where it gives me a memory error when i debug the program in the IDE. the exact error is this: "Attempted to read or write protected memory. This is often an indication that other memory is corrupt". My program basically has a few forms with text fields on that get their text values from an access database on the same hard drive. Im wondering if im doing something wrong because my program just seems to eat up memory whenever it does anything. For example I have one form that has a combobox on it and when you change the drop down list selection it retreives a few strings from the database and puts them into the relevant text boxes, if you keep changing the selection then the memory usage (in task manager) just keeps going up and up. occasionally I get the error mentioned above when debugging but in my built version of the program it throws an exception everytime the memory usage gets past 49K.
Also I noticed when debugging in the "immediate window" frame I get the following message often:A first chance exception of type 'System. Invalid OperationException' occurred in System.Data.dll...Do I need to somehow be "releasing" the memory that is used to gather data once it becomes redundant?
Attempted to read or write protected memory. This is often an indication that other memory is corrupt. Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
QuoteSystem.AccessViolationException was unhandled Message="Attempted to read or write protected memory. This is often an indication that other memory is corrupt." Source="System.Windows.Forms"
Im designing a web browser and i continue to receive this error after going to about 3 websites it crashes with that error.
I have a BackgroundWorker object that I instantiated to perform a DB process on a background thread ansynchronously. I have event handlers for DoWork and RunWorkerCompleted. I can tell that the BackgroundWorker is disposing of itself because I added a message box into the Disposed event handler.Is it necessary to detach the event handlers to ensure that the memory is cleaned up and that there are not memory leaks?
I've noticed that every time I start a new thread in my program, the memory usage jumps about 1000k and it never goes back down. I have ensured that the thread is no longer running, and only one instance of my worker thread is ever running at a time. I am using ThreadPool.QueueUserWorkItem and ASyncOperation to get stuff done. The program starts using a Sub Main in a module that uses STAThread; I read that using STAThread instead of MTAThread makes it impossible for the Garbage Collector to get in and consider objects for garbage collection. However, when I change the STAThread to an MTAThread, the WebBrowser control in my frmMain cannot be instantiated.
I get this exception:
Code: An unhandled exception of type 'System.Threading.ThreadStateException' occurred in System.Windows.Forms.dll
Additional information: ActiveX control '8856f961-340a-11d0-a96b-00c04fd705a2' cannot be instantiated because the current thread is not in a single-threaded apartment. I do threading with the WebBrowser control, so will using MTAThread fix my problem? If so, how should I partition my code so that the WebBrowser control won't be affected by the above exception? I call the thread repeatedly with a timer (although only one instance ever runs at a time), and my program's memory usage starts at about 5000k and can jump to 300,000k+ depending on many times the thread needs to be called.
I cannot use Visual Basic 2008 at all. When I go to "new project" and choose "Windows Form Application" I get this error.I have tried multiple uninstall/reinstall with no result.A microsoft reply to this suggested that I needed: " .NET Framework 2.0 Service Pack 1 " I checked, and I did not have the .netframework 2.0 service Pack 1. When I tried to download and install the above from Microsoft.com, the istaller said that "it was not allowsed" and I was not able to install the service pack 1.
I tried Uninstalling net framework 3.5, 3.0, 2.0 and then reinstalling .netframework 2.0 sevice pack 1; then reinstalling Visual basic 2008 express edition. At the reinstall of Visual basic 2008, .netframework 2.0 sevice pack 1 is unistalled by .net framework service pack 2.When I check the foruims for simiar problems, the formus are mostly for Visual basic 5.0, or other programs that I do not have.
Here is the programs I have installed:
Operating system: Windows XP Microsoft .net framework 1.1 Microsoft .NET framwork 1.1 Hotfix(KB928366) Microsoft .Net Framework 2.0 Service Pack 2
[code]....
All the security updates and hotfixes for Widows XP.
The follow code can be called about 6K times on the server it is run on then gets a out of memory error in the last catch statement. I don't see what is wrong with the code, it works well up until the out of memory..
Public Function AddUserToGroup(ByVal sSamAccountName As String, ByVal sGroupName As String) As Boolean Try Dim returnStatus As Boolean = True[code]......
I have two forms, Form1 and Form2. Form2 has a button to show OpenFileDialog. I call Form2 from Form1 by a button. My startUp Form is Form1. When i start debugging, i press my Form1's button to show my Form2, it shows, but when i click On Form2's Button to show OpenFileDialog it is giving me exception that
"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
When i set my startup Form to Form2 and click Form2's Button to show OpenFileDialog then it shows!
I need to add Functions for the Case 10 and Case 13 in this code. The code in each select case needs to be moved to the two functions which then returns the code once its called from the Sub Main section. But I am having a really hard time figuring out what exactly gets moved to each function.[code]I'm not sure what exactly to put into the individual Functions and how to change up the Sub Main section.
I have a new problem with this same Form Printing project and I get exactly the same exception but from the different point of code:
line 538: d.PrintFunction(c, typePrint, mp, x, y, extendedHeight, ScanForChildControls)
The exception type is System.AccessViolationException and it says (after I translate it from my own language in which the message is given in my pc, into English):"Protected memory was tried to be read or written. This often indicates that the other memory is damaged"
I am getting the following error: "Attempted to read or write protected memory. This is often an indication that other memory is corrupt". i am using interop service.
This code was put together for a one time run. It's purpose is to count all the pages in a group of images. After about 6000 of 1,250,000 images in ##X it throws an "out of memory" error. Besides it being thrown together for a one time run does anybody see anything obvious that could be causing the error?