|
karan vidyut wrote: I know that value type variables are stored in stack and ref variables are stored in managed heap. I wanted to know why.
I think you mean "value objects" and "reference objects".
|
|
|
|
|
Reference types (e.g. objects) are always stored in the heap.
Value types declared inside a class is stored inside the object data on the heap.
Value types declared as local variables in a method are stored on the stack.
If reference types would be stored on the stack, they would live exactly as long as the method call where they are created. They could not be freed earlier and not survive after. Also the stack has a limited size (2 MiB by default, IIRC) and can not be expanded at runtime.
If local variables would be stored on the heap, it would mean that most method calls would allocate memory on the heap, vastly increasing the heap turnover and adding a lot of overhead.
---
b { font-weight: normal; }
|
|
|
|
|
How to emulate the File->Send->Page by email functionality given by IE.
Is it possible to achieve the same result on click of a button using asp.net
|
|
|
|
|
hi
i have developed a test page in asp.net 2.0 (VS 2005), and tried to hold it on my domain. it is a simple page with three textbox and a button, web.config is also default, but it gives error
Server Error in '/' Application.
--------------------------------------------------------------------------------
Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: Unrecognized configuration section 'connectionStrings'
Source Error:
Line 10: <configuration>
Line 11: <appsettings>
Line 12: <connectionstrings>
Line 13: <system.web>
Line 14:
|
|
|
|
|
Since this element is new in .NET 2.0, that would suggest that your host server hasn't been upgraded to support .NET 2.0 and the server is trying to run your page with the .NET 1.1 runtime.
You need to get the server upgraded with .NET 2.0.
|
|
|
|
|
Hi All,
I want to write some program that control windows behavior, like hiding the desktop, disabling Ctrl+Alt+Delete, Hide Start Menu, and all this stuff, how can i make under .NET
and plz give me a detailed answer coz am new to this field
thanks in advance
|
|
|
|
|
Go ahead and try yourself first. If you encounter specific questions, post them here and some of us may be able to help.
Best,
Jun
|
|
|
|
|
I'm already done with most of this project -this part is only a small part of the project- anyway, am doing my best to have answers for my questions
|
|
|
|
|
HI
i have discovered all messages from a dbx file
now how will i put back ina dbx file
|
|
|
|
|
to all d wizards out there:
I have a problem here with regards to Axis Web Service. I have an ASP.Net Web Application and I have to pass values on An Axis Web Service that has been created... Can somebody tell me what to do with regards to this...
Thanks a lot..
|
|
|
|
|
By passing data do you mean invoking a method? There should be no problem for an ASP.net web application to consume a web service that is being hosted on tomcat(or any java server) through axis. All you need to do is add the URL of the web services WSDL to the web application to the 'web references' part of your solution tree.
-Steve
|
|
|
|
|
Hi,
I have to write an application that will start applications that are scheduled at some time. Lets us assume that I have 5 Aplications (exe files) that have to run at 11:00AM.
I can start these applications by using Process class, but my requirement is that all the n Applications should be started at the same time rather than in a sequence.
Any suggestion / ideas will be appreciated.
Thanks in Advance,
Thanks & Regards,
Mohammed Imdadullah
|
|
|
|
|
Md.Imdad wrote: but my requirement is that all the n Applications should be started at the same time rather than in a sequence.
You won't be able to do that unless your system has many CPUs. Otherwise, the executions will be sequent, even with multiple threads.
Best,
Jun
|
|
|
|
|
Ok first, I'll outline my project. It is a web application made to search and display records of archived technical documents. What I have right now is a page that uses datagrids (via drag and drop from Visual Studio 2005) to display columns of data from my SQL Test server.
What I need now is a way to create a simple form text box and create and pass a variable to the SELECT statement within the datagrids. All my attempts at this thus far, using both ASP and C# and MSDN knowledgebase, have ended in frustration.
Here is the code of the datagrid:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display.">
<Columns>
<asp:BoundField DataField="OVERVIEW" HeaderText=" " SortExpression="OVERVIEW" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="
<%ConnectionStrings:trdConnectionString2 %>"
ProviderName="<%$ ConnectionStrings:trdConnectionString2.ProviderName %>"
SelectCommand="SELECT [OVERVIEW] FROM [SUDS_TRD] WHERE [IDENT]='1'">
</asp:SqlDataSource>
What I need to do is where it says [IDENT]='1', is have that "1" be a parameter passed from an HTML form, perhaps looking like this WHERE [IDENT]='"% strIDENT %"', yet I do not know how to pass a parameter from an HTML form into that SELECT statement. Any help would be great as this is a problem holding up my project.
To reiterate, I need to:
A. create an html form text box
B. pass that textbox as a variable
C. place that variable into the SELECT statement for the ASP datagrid.
Any help would be great, example code, whatever it takes; the simpler the better =) Please just don't send me to MSDN's Datagrid Knowledge Base page as 1/2 the stuff there doesn't even work =[.
Thanks for any help in advance!
|
|
|
|
|
I have written a C# application that uses very large objects: 1mb to 3mb,
it has what seems to be a memory leak. According to microsoft and all
my colleague .NET Applications DON'T leak. So I looked for an answer and came
across that:
"The large object heap is never compacted..."
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/DBGch02.asp[^]
a quote from microsoft article about memory debugging.
Isn't that means that when a memory is freed a hole is created and not handled?
Is that the reason my app is leaking?
Thanks
b.v.
|
|
|
|
|
BarV wrote: According to microsoft and all
my colleague .NET Applications DON'T leak.
True, to a point. A .NET app can only leak unmanaged resources or memory allocated through unmanaged means.
BarV wrote: Is that the reason my app is leaking?
What makes you think your app is leaking? Don't tell me you relied soley on the numbers you saw in TaskManager?
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
No. I relied on the Private Bytes counter in the prefmon.
b.v.
|
|
|
|
|
BarV wrote: Isn't that means that when a memory is freed a hole is created and not handled?
No, it doesn't.
The hole is created, all right, as the heap is not compacted, but it's handled. The memory will be used for allocating new large objects.
---
b { font-weight: normal; }
|
|
|
|
|
Ok, so the Large Memory Heap is defragmented?
|
|
|
|
|
No, it's not. Moving large blocks of memory around can take an eternity, so there is no compaction, or defragmentation as your calling it. The hole remains where it was created. But the CLR is smart enough to fill that hole with whatever it can, whenever it can. The memory is not "just wasted".
The memory stays allocated as far as an unmanaged view of the memory goes. Which is what you saw when you used the Process' Private Bytes counter. The memory is not used by your application, as far as Windows is concerned, it is. This is because the memory is reserved by the CLR in the Managed Heap. You MUST used the .NET CLR performance object counters if you want to see how much memory your app is REALLY using. What you're looking at, when using the Private Bytes counter, is the memory reserved for your application (allocated by your app or not) by the .NET CLR virtual machine your app is running in.
-- modified at 15:20 Monday 21st August, 2006
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
Thank you.
|
|
|
|
|
Dave Kreskowiak wrote: No, it's not. Moving large blocks of memory around can take an eternity, so there is no compaction, or defragmentation as your calling it. The hole remains where it was created. But the CLR is smart enough to fill that hole with whatever it can, whenever it can. The memory is not "just wasted".
Not in bulk, but in small amounts, it can effectively be. The problem is that the large object heap can fragment in the same way as a standard heap in a native app. The risk of large scale fragementation is minimal though because you need frequent de/allocation on the heap to cause it, and you shouldn't be creating and destroying large objects very often.
|
|
|
|
|
Various pieces of a strcutre or class can be rearranged, but not something like an entire array. I've worked with HUGE arrays (250+MB) and those don't get compacted or moved. The holes they created stay in place until another array was allocated or an existing array expanded. Because the indexer is required to be contiguous, moving an array of that size after it's been swapped to disk can take forever and a day as far as your app is concerned.
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
Dave Kreskowiak wrote: Various pieces of a strcutre or class can be rearranged, but not something like an entire array. I've worked with HUGE arrays (250+MB) and those don't get compacted or moved. The holes they created stay in place until another array was allocated or an existing array expanded.
That was my point, which is how in theory the heap can fragment.
The following psudeocode will put a 10byte fragment on the large object heapthat will remain unused for the remainder of the app's runtime.
Allocate(TempObject, 1000) // in use, bytes 1-1000
Allocate(PremamantObject1, 1000) // in use, bytes 1-2000
Deallocate(TempObject) // in use, bytes 1001-2000
Allocate(PremamantObject2, 990) // in use, bytes 1-990, 1001-2000.
//Unallocated, and too small to use bytes 991-1000
In a well designed app, this won't happen often enough to be a problem, but with a sloppy design that's continually re and deallocating from the large object heap you could end up with a number of such fragments around objects that have long lifetimes. Worst case could be almost 50% loss with a sequence of minimum sized objects, and gaps one byte smaller than the minimum. If this is happening there's bad design to blame, but a heap fragmentation leak's possible in theory, which was my point.
|
|
|
|
|
Oh! I know how the heap can fragment! The trick is knowing how to defrag it yourself.
The app with the HUGE arrays allocated two arrays on the LOH. This app iterated over a set of data, over and over again, until a solution was found. The first array was the data from the last pass and the second was the data generated from the current pass. Well, pass after pass, the LOH grew and grew, faster than the amount of data that was generated. Weird - and very much like the OP's problem.
The solution to implementing LOH compaction in this case was surprisingly easy. Since I only had two objects only needed one of them the next pass, I simply serialized the generated array to disk, disposed of both arrays, forced a GC, then deserialized the array from disk to put it at the bottom of the LOH. A poor-man's memory manager, if you will. According to the CLR Profiler and a bunch of testing, it worked beautifully! It's not the best performing solution, but I didn't need the app to respond between passes. Most of the apps time was spent crunching on that ever growing pile of data...
Now, implementing something similar in the OP's case depends on his objects and requirements...
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|