Oracle result cache behaviour
Oracle by default does not cache query and function result, but both cache do exist.

http://www.oracle.com/technetwork/articles/sql/11g-caching-pooling-088320.html

The importance of these: there is more than caching blocks. Even if you process everything in memory, why process the same requests again and again, if you already know the answer?

What you are referring to when mentioning autotrace and physical reads, is the buffer cache.


  "I have also noticed that the buffer cache does not gets invalidated
  even when I try to restart the server."


This is a false conclusion. When you restart the database, the buffer cache will be empty again. Post your test that confirms the opposite.