diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go
index c41375c4d0e6a46b91ebdddb632b6125dfc6d724..20c7dc74c0c7cd75829f5c171800ff7fbc7afc75 100644
--- a/cmd/geth/chaincmd.go
+++ b/cmd/geth/chaincmd.go
@@ -99,7 +99,8 @@ func importChain(ctx *cli.Context) error {
 			utils.Fatalf("Failed to read database stats: %v", err)
 		}
 		fmt.Println(stats)
-		fmt.Printf("Trie cache misses: %d\n\n", trie.CacheMisses())
+		fmt.Printf("Trie cache misses: %d\n", trie.CacheMisses())
+		fmt.Printf("Trie cache unloads: %d\n\n", trie.CacheUnloads())
 
 		// Compact the entire database to more accurately measure disk io and print the stats
 		start = time.Now()
diff --git a/core/state/statedb.go b/core/state/statedb.go
index 6a24d2865e49a2b8f416f3c1ffbf3defd370bcb1..ae106e03b55c37c5421bdd40352a01c28eb03a02 100644
--- a/core/state/statedb.go
+++ b/core/state/statedb.go
@@ -564,6 +564,8 @@ func (s *StateDB) Commit() (root common.Hash, err error) {
 func (s *StateDB) CommitBatch() (root common.Hash, batch ethdb.Batch) {
 	batch = s.db.NewBatch()
 	root, _ = s.commit(batch)
+
+	glog.V(logger.Debug).Infof("Trie cache stats: %d misses, %d unloads", trie.CacheMisses(), trie.CacheUnloads())
 	return root, batch
 }
 
diff --git a/trie/trie.go b/trie/trie.go
index 2a7bc16e410c8b98a879255cc245ae083290e8cc..035a80e74c9c50b029380708443f93f725f3825d 100644
--- a/trie/trie.go
+++ b/trie/trie.go
@@ -47,6 +47,13 @@ func CacheMisses() int64 {
 	return cacheMissCounter.Count()
 }
 
+// CacheUnloads retrieves a global counter measuring the number of cache unloads
+// the trie did since process startup. This isn't useful for anything apart from
+// trie debugging purposes.
+func CacheUnloads() int64 {
+	return cacheUnloadCounter.Count()
+}
+
 func init() {
 	sha3.NewKeccak256().Sum(emptyState[:0])
 }