Procedure Cache Dropping
One reason could be somebody changing options or running sp_configure. That would be logged in your error log.

Please read this article: Using Sp_configure To Change a Value Will Issue DBCC FREEPROCCACHE


  using sp_configure to change a configuration value causes SQL Server
  to issue a DBCC FREEPROCCACHE statement.


and


  The same behavior will occur if you use a GUI such as SQL Server
  Enterprise Manager that issues an sp_configure call that changes a
  parameter.


The Plan Caching and Recompilation in SQL Server 2012 white paper gives some other possibilities.


  Flush Entire Plan Cache The following operations flush the entire plan cache, and therefore, cause fresh compilations of batches that
  are submitted the first time afterwards:
  
  
  Detaching a database
  Upgrading a database to a later database compatibility level
  Restoring a database
  DBCC FREEPROCCACHE command
  RECONFIGURE command (many of the options to this command cause a flush)
  ALTER DATABASE … MODIFY FILEGROUP command
  Modifying a collation using ALTER DATABASE … COLLATE command
  
  
  Flush Database-Related Entries in Plan Cache The following operations flush the plan cache entries that refer to a particular
  database, and cause fresh compilations afterwards.
  
  
  DBCC FLUSHPROCINDB command
  ALTER DATABASE … MODIFY NAME = command
  ALTER DATABASE … SET ONLINE command
  ALTER DATABASE … SET OFFLINE command
  ALTER DATABASE … SET EMERGENCY command
  DROP DATABASE command
  When a database auto-closes
  


Lots of these events should be in your log files.