I will not go into what w3wp.exe is used for as there are many posts online on the topic.  I am only sharing my experience.  I have a client that makes heavy use of SharePoint 2010, with numerous web applications, each with it’s own application pool.  My concern was the memory use of the machine.  it seems as though the application server was always using somewhere in the 90% of available memory.  when I viewed the running processes, I noticed many instances of the iis worker process.  Now sure, some of these may be live, however, could it be possible some are idle connections?  Well I reviewed the idle timeout setting, and it was set to 0, meaning idle sessions were never terminated regardless of the timeperiod.  I changed the timeout to 20 minutes, and the memory usage dropped by 2GB.  I change the timeout to 10 minutes (which seems to be a highly recommended timeout settings), and the memory dropped another 2GB for a total of a 4GB reduction of memory usage.