C# : .NET
Top 36 C# Example Pages...

[[".VCSTUUUUTTUUUUYF6G7F)C.CXCCCEP6677F(CB.CBCP766767666F4444A(BC.CCX(/CSTTUUUUTTUUUU","tw.rtshde.rrshf.","GC.Collect."," The C# language is a garbage-collected language. This means that memory that is no longer referenced by your program will be reclaimed and is later reused. With GC.Collect, we force a garbage collection to occur at any time.","Example."," First, this example invokes the GC.Collect method. Three calls to get the total memory usage on the system are present. They occur before the allocation, after the allocation, and after the forced garbage collection. ","Tip: ","You can see that memory returns to its low level after the garbage collection.","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","br","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","Based on:"," .NET 4.5\n\n","C# program that uses GC.Collect","\n\nusing System;\n\nclass Program\n{\n static void Main()\n {\n long mem1 = GC.GetTotalMemory(false);\n {","\n // Allocate an array and make it unreachable.\n ","int[] values = new int[50000];\n values = null;\n }\n long mem2 = GC.GetTotalMemory(false);\n {","\n // Collect garbage.\n ","GC.Collect","();\n }\n long mem3 = GC.GetTotalMemory(false);\n {\n Console.WriteLine(mem1);\n Console.WriteLine(mem2);\n Console.WriteLine(mem3);\n }\n }\n}\n\n","Output","\n\n45664\n245696\n33244","Discussion."," So when should you call the GC.Collect method in your .NET programs? In my experience, you should never call it. The call will usually not do much to reduce overall memory usage. And it will impose a slowdown whenever it is called. ","In ASP.NET: ","The GC.Collect on one application will cause a performance hit on all web sites in the same pool.","This method"," adds more complexity to your program and probably even reduces overall performance. The .NET garbage collector is finely tuned by Microsoft. They have more time and money to spend on tweaking its performance than you do. ","And: ","I have used GC.Collect (without success) in attempts to improve performance, particularly after a lot of allocations after startup.","CollectionCount."," GC.CollectionCount returns an int. It tells us how many times garbage collection has occurred. Getting information about how often garbage collection is occurring in your program is not always simple. ","Tip: ","With CollectionCount and the GC.MaxGeneration property, we get this information.","Note: ","Because most objects die young, generations are used to optimize which elements are scanned.","And: ","Newer objects are scanned more often because they are most likely to have become dead.","Compiler ","compiler","C# program that uses CollectionCount","\n\nusing System;\n\nclass Program\n{\n static void Main()\n {","\n // This loop does a lot of allocations!\n ","for (int i = 0; i < 100; i++)\n {\n for (int a = 0; a < 1000; a++)\n {\n System.IO.Path.GetRandomFileName();\n System.IO.Path.GetRandomFileName();\n }\n System.Threading.Thread.Sleep(1);\n }","\n\n // Display collection counts.\n ","for (int i = 0; i <= ","GC.MaxGeneration","; i++)\n {\n int count = ","GC.CollectionCount","(i);\n Console.WriteLine(count);\n }\n }\n}\n\n","Output","\n\n15\n0\n0","Program output."," On my computer, the program resulted in 15 generation 0 garbage collections. This is because the memory allocations caused by GetRandomFileName were all put in generation 0. ","Then: ","They died, meaning they lost any reference from the program's flow graph. As is sadly the typical case, these objects died young.","Path.GetRandomFileName ","path-getrandomfilename","GetTotalMemory."," GC.GetTotalMemory returns the number of bytes allocated. It accesses statistics about the managed heap. It returns data about the entire .NET Framework, not the specific program. With it we determine the sizes of objects in memory. ","Parameter: ","The method receives one parameter of type bool, which lets you demand a garbage collection to occur before taking the numbers.","Bool ","bool","Next: ","This program shows the memory difference after allocating ten million bytes and then collecting them.","C# program that uses GC","\n\nusing System;\n\nclass Program\n{\n static void Main()\n {\n long bytes1 = ","GC.GetTotalMemory","(false);"," // Get memory in bytes\n\n ","byte[] memory = new byte[1000 * 1000 * 10]; // Ten million bytes\n memory[0] = 1;"," // Set memory (prevent allocation from being optimized out)\n\n ","long bytes2 = ","GC.GetTotalMemory","(false);"," // Get memory\n ","long bytes3 = ","GC.GetTotalMemory","(true);"," // Get memory\n\n ","Console.WriteLine(bytes1);\n Console.WriteLine(bytes2);\n Console.WriteLine(bytes2 - bytes1);"," // Write difference\n ","Console.WriteLine(bytes3);\n Console.WriteLine(bytes3 - bytes2);"," // Write difference\n ","Console.ReadLine();\n }\n}\n\n","Output","\n\n21060 ","Program started with these bytes.","\n10021092 ","After ten million bytes allocated.","\n10000032 ","Difference.","\n12860 ","After garbage collection.","\n-10008232 ","Difference.","In this example,"," the calls to GC.GetTotalMemory receive a single parameter in this program, either false or true. The literal false is the default here. It indicates that an expensive collection should not be forced. ","False ","true","Usually: ","Forcing a GC has no benefit in programs. It just adds to the complexity. It is best to leave this parameter as false.","Managed heaps."," The GC.GetTotalMemory method operates on the concept of the managed heap, not the program that you are calling it from. Programs that allocate data on the managed heap are called mutators. One managed heap can have many mutators. ","Note: ","When you invoke GC.GetTotalMemory, you will be counting the allocations from all the mutator programs.","And: ","On a web server, this would add allocations from other programs also running in ASP.NET.","Statistics."," There is an excellent way of getting a general feel of the amount of memory your program is allocating on the managed heap. You can set up a special web page or dialog in your program that reports the statistics from GetTotalMemory.","It can store"," the previous figure in a static field, and then subtract the second from the first to see the change. This does not give you precise and exact figures. But it helps you determine if memory is or will become a problem.","Summary."," The GC.Collect method is best used for diagnostics purposes (like determining a base line of memory usage). You can also use it to see if all the objects you no longer need are not reachable and can be collected by the garbage collector. ","However: ","In deployment, the GC.Collect method is not useful because it often has little benefit and might even reduce performance.","br","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","3679700504","data-ad-format","link","br","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto"],"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKoAAABVCAAAAAD82SCSAAACrElEQVR4Xu3bgW0rMQgGYM/NFMzBFszAAGzACrykOkv32sYhzo9aNfkHwF/QSRHceeTNhKuKMNMRvkREVM0viUvyuYTbxwHzhFnfzN2/lv+eGqZMi1zNape4b4pd5V75WX9BjTNzDT4Kmj/mdaFKPoHHokwtD3uNHypvR/wT1Zl2onYkcNAZm/mfKrQXqVLj4RP4W6ozNVNjeUL9ATCiZqoTQahK3dQgDNWomxqMoTq1U4Ug1OB2qhGGKtRO5f3SZ6pRO1UJQ+V+Kj9desymNlONMFTupzKG6tRODcJQpZ9qICr1UwVDtX5qEoYq/VTfp+qZSv1Uw1CjYuGZParsn3GmWnnMm44IdzM9bQnUfUnle0yZooh5hNlHfY9L3P1KlTV0OeFN+SG8ObJChoiRXBsX8okEQpojIVPzOk6Idozob2parR25znDIfL+OQdoxrPyD96OQdoxlGcNQBbJEGtr/qKZA2jHkTT2HIWcMLk2LmcXN4o9T42WotIjUqfRbqPFC1Df1TX1T31RvpGL+rfj1qMsz/iRVSoIXoEKnAK2NaL+eKgAqbmKtrhNEhAvUzj2A15c0XqB2bleCqnX2qQ5Z4Y2kap19amA2gclVa4naul8VqhbapiYToK8jrfDNl9o1uk0VuhPRLy8cjjcOV318ZKRTOdtUpUp45ub3AG1U3HdRkyr91ABRrZ+aIGogqfA313ympvRTDUT1fmqAqMnt1GQQ1fqpBqImt1MTRfV+qoKoqe3UQFGTu6mpKGpwNzUZRM3gbmqgqBncSp0jFuZje2mmpsGoadxLTYNRM7WXmsH7pcfiWlA5LAfUPe9FEdQZF64bRfV0L6qSUMgDMBO65vI0bl0NC2N67MLVvG91K26fL9xN4fP37cKE6cFrbCN/LnH0gk+tWPTiHwXRc8VR895LAAAAAElFTkSuQmCC)","url(data:image/jpeg;base64,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)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGoAAACZCAMAAADw+V8SAAAADFBMVEX////09PTk5OTU1NQ/cPF/AAABzUlEQVR4Xu3bQarDMBRD0Xel/e/5w59m0FiNRQnWBg6vBidynVkOAJIAYLYEJF9j6VHxqly9Zxzfiig4T2jycpQPVMCQ4yiA4hCs0ebB8BMhWKRtlvxYFIy0w8J2x5JdsmR3LLwl1CSbmmQHy5RGNcmmJlk1yaYm2aGUj4ULUSblY9lvG2t6Fj1LU7M065b+k+/vrBcNpGxzIik0KKGGqDkRVQayiqaAGrJekVBDVCqIXjGI6ktEDTv7xHyyZrZQV0uzjxpWpZwaLtI2aliTcE4NK9LoG2pYkPiy1BFIITXclCboCGGClpUFL6QnqSaZySO3hpJLQ+HF9CRq59SqSaa0TLZ+XZLX05OIJLckEkm5dCRzpIUOVd8j+vsek6Ug1Z6E/af7qCaNay981KSR3Wo2PWl60hSkoOy2KE2NokZp3kjxQupQhzrUoUb3klAnJ/nVZYl9joILvRkUNI+8jjQwglawqWGpJtmqSbYqUm71i0i/M8qt0kiv3ssrKaxU/+9Eq0e59vvZzAvPHK0nqUMdih+m6O0W1T2wtVgqPq+6d3ryqDBUdIW3ZdVepM20LGpVhFrBolVQ1ardpnCYEEA5pgAKPiYvnDYCRMgfJbla10Up7TkAAAAASUVORK5CYII=)"]

["url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAL4AAABBCAMAAABYbu5jAAAAMFBMVEX///+1wv+jqv9siv/p6//W3f8zZv9gb//19v9NK/8zAP999//S//8z//8zzP+z6P/0gInFAAABg0lEQVR4XtXXy1ICURAD0H7c96D+/9/KQqkhlEKD0iTrWZzKYtJXbou2s+jvn1Q55f2mfAMOb6Ec5D6+c/ObcvOdm98qN9+5+a1w842b3wo33/6Dv2H22g3zCL+PKF/uSKDsGL8pN9+5+U25+c7Nb5Wb74R8h+ki41eYLja+Qf1k/AL1k/HF4XIg4ytMFxl/X7/z8aF+Ov6A6bqR//FTnswXa2B96LmyPZtfoH4yvsDlwMaHy4GLj/Xz8RXqJ+PD5UDGh+ni448O08XEh+lSrtUVnC6qm+ey/krGx+li4+N0sfHh7Cfj43Sx8bF+Mj5OFxkf67c8frF+jJUovzRIBr/4+kovMb5YPr/OdcrUGL9k8FG/Tw3xxbP55/o1R4hfk/m6IBbii+fyJ/JnjK+5/HWRGuJLfzG+xvh6lX89f8m3GH90ar7Ya/FrkF8y+XNhRpAvlsi3+H8fUxP5A+svYb54Hl8Uy4/zNZEvCvo4XzyRLzrhXg7zNZMvw/o6ptsQpvDnE+wJyVGQ5SG7AAAAAElFTkSuQmCC)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANIAAABCCAMAAAAVIXgzAAAAMFBMVEX/////6u7/3+XOwf/0xf+7v//y3v/w8f//2eb/+vX/59T/ztzk5///9O7/4tz/6uVDuxD0AAAAvElEQVR42u3YNw4DMQwFUSptoMPe/7YWILJi4zXUWJg5wAdepSArt7dRUU96zVLv/HIrTkmcmrgFCRIkSJAgQYIECRIkSLO3nlY+6uihXu5VS713flkS8ql8xKlenPItmbrVLL2dhH6fmrgFCRIkSJD+mrRbaSujql7qFUu9K52WhHwqbXGqF6d8SyZucceDBAkSJEiQIEHih4gfIt5LkCBBggTpVgsetdzxIEGCBAkSJEiQIEGCBClsLdsHXGYDTXcJauEAAAAASUVORK5CYII=)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAACCAgMAAADasxWRAAAADFBMVEX/6Nn///+VlZX29va5ksB5AAAASElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOSAALWyrsxEHLDAAAAAElFTkSuQmCC)","AF","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALkAAABWCAMAAACkYcc5AAAAYFBMVEXsZn/////63eH2tsH+9/jwjJ3xmKfa2tr51Nr0rbnx8fHtcon97vHLy8vvgJT75unm5ub61t34y9L2wcrtbobV1dXp6enOzs74+PjsZ4Dh4eHyo7DxkqT8/Pzxj6H19fVPImPVAAACVklEQVR4Xu3ZyYrsMAyFYf+yMw81Dz3e93/L25iQbUtg02Xw2WRzCF8KFQ6Rg9Pn1f2S6+eJLbn65rrDvzlF3jxbcvWtdXeKTUX3REy+vrHuvp0y38Tk6xvr7qqtXonJ1zfWnT7E5Osb62XJq7zKq7wHOBskQ38AuSj7jUiAuR/SywPArJZPB2JE2W/ZIqnlK8zApJV7IIiY5LMEwCeWDyAztFr5DH387dXyyBOQxPILeAGvlbM/pUk+QEgsP8DgQQzyD7s8XhLLgeYDgmFaDs0ryOMdG2BVSs4A4bwa5R7mtHIPh4gclJI1EO2rSd4E6NPK+3hHAe3J4hoBoNfLt7Rp5QF8HIGD/jRfhwBY5ReXVN6wRS3ZOY1eLiK+cWnlA3tag9zp++3OSys/Q5CfAN4gn3LKm7ZtVedQv19Vkml7YKZcctEM0QT4jTLrJIIIgLg/lbds8+qBSSmPCc3fyndwC3yoJBcJIBfTGVq/WlR5lSdPlVd5ud/Py91ZqPdE7kRMvr6xXu5uruR9aJmp8syp8rF7LL/k0Y3Wvrlulx8XVY7WvrFul4+LMqO1b6yb5Z1W0ln7xrpZ/tBKHta+sW6WL+pY+8b6C8qrvMqrvMr30wPQydkyKuUje9LL78XKn0b5v/En91eQc7PJO+ucA12GOR/hvUz5Ee5lyjt4lilfgJv9H3p7AXkcdIs8pnsB+RHGMuU3+CpzzpcvuJUpH+FYpvwIY5HyOOhlypcnZHnjyi+/Q5a33Pzy9wLk9atFlatS5VVe7vfzcncW5e6Jit3NFbwP/Q94HRdborfwLgAAAABJRU5ErkJggg==)","url(data:image/png;base64,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)","F","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALwAAAByCAAAAADMwOSzAAACe0lEQVR4Xu3csY7kMAgG4Lz/86Wkp6ZAokDy6RTfodVsTDSaxPy7/uux9a0LZpkEb20YNzNVEWYmItr/hYiYWcS8Tcw2cKv8DTPtoxCzqFfC+wGXgCchYlGvgDfp9MBd/xNsIj7otL8XHwC8x14Sq04/Yine4tRvwEvP6ypqPXp+dgneY+nbaZPwHscOh7eww+HDjoL/uJ1m4D3scPjYFw8fawDxUWjw8LErFP7TB7/z0/jYFA8fB4+Il1iQh47UwF//fvrfLPV/t0WEj+52Ev5yjWc96y/MNNrdR/EX6yRZuxb3Z/Ge10lu1/MsPm9auZXFS09iL4n3DE+tLD5vQrQsPi+U1ArjJcELAv7Og/eeAT4+cor3r2lbVPk7Sk30ODeEt3R/QcZ7YXxWbKgB47kyPis2goy3ynhP8K00frw9lcbbD8bz3fiFJ0S8jvEyCb/wioy30nhZ+Kz/Mz3CPa8S0h7hI9+AtMeOeIb3cBRswGO7UviFfwO48Au/8Au/8OhfUgu/8EkzUhqvNfELr8h4+cV477EuGvSw0sPnPaz06BHbDOJHp/UrMf6TkYVfD9RagndkvCI/vpfSeAN+9yDbn0rjPdnfEPCC+JpWS/BUGJ8PGWldfH46XBifzy1oXXw+qkOF8dE1wr2Cful4uC7epQdu7OLimBRpRfzlmkDiw1kjNRFmmjehto9DLJZNeT2P1zfG66jKbKAjDzbGCkS8Iw/zxhJAfGyLiI9aj4iPRYg3ToQeEB87EyLepQcLnyzEwIceER8VEwT/6fu0JuKDzwSA/yifWGbhIxb+y2wWm9DDJnc+UtE7HwOfXOTB/KX1o37bppq3efkDT4lpi2pYKzIAAAAASUVORK5CYII=)"]