Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I am not sure if I was able to explain the question properly. But basically I am using a windows xp box 32 bit to deploy asp.net app to 64 bit windows server. The IIS server I am guessing is 64 bit process. Can the asp.net app use all the memory that is allowed from being a 64 bit server? or will it just use 4 GB max.

share|improve this question
add comment

4 Answers

As asp.net is JIT-enabled, it will JIT-compile on the webserver upon page requests. Which means it should have no problem utilizing all the resources on your server.

share|improve this answer
1  
Not if a site is pre-compiled or uses pre-compiled libraries. –  squillman Oct 21 '09 at 16:49
1  
@squillman - precompiled .NET code and precompiled assemblies are just MSIL and so it won't actually matter (generally). –  Kev Oct 22 '09 at 18:58
1  
...and nicely explained by Jack below: serverfault.com/questions/76825/… –  Kev Oct 22 '09 at 18:59
add comment

A .net application by default will run in whatever environment it is in (either 32 bit or 64 bit). It is possible to force a platform in the properties of the project in

Build -> Platform Target: Any CPU, x86, x64

Forcing x86 will make the .net assembly run in 32 bit mode even on a 64 bit machine. The default build option is Any CPU.

So as long as your project is running Any CPU it will up itself to 64 bit mode on a 64 bit operating system and the appropriate memory access.

share|improve this answer
add comment

I'm not a .NET expert, and it's been a while since I worked with precompiled binaries, so take this with a grain of salt.

My understanding is sort of. The application itself will not be able to address a larger memory space than 32-bit. However, the OS should enable address translation that allows that block to exist anywhere in the OS's address space. So, the app will not be able to address more than it otherwise would, but more ram will be available for addressing.

Does that make sense?

share|improve this answer
    
Simply put, a 32-bit application can address 4GB of RAM, period. A 32-bit OS can, likewise, only manage 4GB of RAM, with the exception of one which has PAE support (Most Windows/Linux systems support this), in which case the parent OS can assign a 4GB block of memory to a process as it's pseudo-physical block of memory. In a 64-bit environment, you can address about 18.4 Exabytes, so that should be good for a while. –  Kyle Smith Oct 21 '09 at 18:55
    
Right. What he said. :-) –  Ben Doom Oct 22 '09 at 19:05
add comment

Simply put, a 32-bit application can address 4GB of RAM, period. ( I agree ...)

But I already told a few years ago that x86 can expand to 64 bits but it is a long story...

share|improve this answer
    
Think with me and follow the idea, if only one thread in the system will access an additional set of registers in a modified x86 processor it will work, the problem is task switch for different threads using the same 8 internal registers but if only one special thread will use these registers then no reason to save these new registers state, yes, the x86 could be expanded not only in registers but in memory addressable. –  Arabcoder Oct 21 '09 at 22:45
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.