1. A method of managing memory in a processor, the method comprising: allowing unrestricted access to any data stored in a shared cache in the processor; in response to a cache miss event associated with a thread running in the processor, using a fill partitioning policy to select a location within a defined portion of the shared cache; and storing content of a memory location associated with the cache miss event in the selected location in the shared cache; and dynamically switching on and off use of the fill partitioning policy to select a location based on one or more of: thread ID and cache conditions.