diff --git a/include/jemalloc/internal/cache_bin.h b/include/jemalloc/internal/cache_bin.h
index 12f3ef2..bf73c7d 100644
--- a/include/jemalloc/internal/cache_bin.h
+++ b/include/jemalloc/internal/cache_bin.h
@@ -46,12 +46,15 @@
 	cache_bin_sz_t low_water;
 	/* # of cached objects. */
 	cache_bin_sz_t ncached;
+        /* Removing this variable make the cache_t structure fit in a single page. */
+#if defined(ANDROID_ENABLE_TCACHE_STATS)
 	/*
 	 * ncached and stats are both modified frequently.  Let's keep them
 	 * close so that they have a higher chance of being on the same
 	 * cacheline, thus less write-backs.
 	 */
 	cache_bin_stats_t tstats;
+#endif
 	/*
 	 * Stack of available objects.
 	 *
diff --git a/include/jemalloc/internal/tcache_inlines.h b/include/jemalloc/internal/tcache_inlines.h
index 0f6ab8c..0859c4e 100644
--- a/include/jemalloc/internal/tcache_inlines.h
+++ b/include/jemalloc/internal/tcache_inlines.h
@@ -90,9 +90,11 @@
 		memset(ret, 0, usize);
 	}
 
+#if defined(ANDROID_ENABLE_TCACHE_STATS)
 	if (config_stats) {
 		bin->tstats.nrequests++;
 	}
+#endif
 	if (config_prof) {
 		tcache->prof_accumbytes += usize;
 	}
@@ -148,9 +150,11 @@
 			memset(ret, 0, usize);
 		}
 
+#if defined(ANDROID_ENABLE_TCACHE_STATUS)
 		if (config_stats) {
 			bin->tstats.nrequests++;
 		}
+#endif
 		if (config_prof) {
 			tcache->prof_accumbytes += usize;
 		}
diff --git a/src/arena.c b/src/arena.c
index 5d55bf1..61b8083 100644
--- a/src/arena.c
+++ b/src/arena.c
@@ -1289,10 +1289,14 @@
 	}
 	if (config_stats) {
 		bin->stats.nmalloc += i;
+#if defined(ANDROID_ENABLE_TCACHE_STATS)
 		bin->stats.nrequests += tbin->tstats.nrequests;
+#endif
 		bin->stats.curregs += i;
 		bin->stats.nfills++;
+#if defined(ANDROID_ENABLE_TCACHE_STATS)
 		tbin->tstats.nrequests = 0;
+#endif
 	}
 	malloc_mutex_unlock(tsdn, &bin->lock);
 	tbin->ncached = i;
diff --git a/src/tcache.c b/src/tcache.c
index b4320e4..b2557c1 100644
--- a/src/tcache.c
+++ b/src/tcache.c
@@ -140,8 +140,10 @@
 			assert(!merged_stats);
 			merged_stats = true;
 			bin->stats.nflushes++;
+#if defined(ANDROID_ENABLE_TCACHE_STATS)
 			bin->stats.nrequests += tbin->tstats.nrequests;
 			tbin->tstats.nrequests = 0;
+#endif
 		}
 		unsigned ndeferred = 0;
 		for (unsigned i = 0; i < nflush; i++) {
@@ -176,8 +178,10 @@
 		bin_t *bin = &arena->bins[binind];
 		malloc_mutex_lock(tsd_tsdn(tsd), &bin->lock);
 		bin->stats.nflushes++;
+#if defined(ANDROID_ENABLE_TCACHE_STATS)
 		bin->stats.nrequests += tbin->tstats.nrequests;
 		tbin->tstats.nrequests = 0;
+#endif
 		malloc_mutex_unlock(tsd_tsdn(tsd), &bin->lock);
 	}
 
@@ -192,7 +196,9 @@
 void
 tcache_bin_flush_large(tsd_t *tsd, cache_bin_t *tbin, szind_t binind,
     unsigned rem, tcache_t *tcache) {
+#if defined(ANDROID_ENABLE_TCACHE_STATS)
 	bool merged_stats = false;
+#endif
 
 	assert(binind < nhbins);
 	assert((cache_bin_sz_t)rem <= tbin->ncached);
@@ -232,6 +238,7 @@
 				    tcache->prof_accumbytes);
 				tcache->prof_accumbytes = 0;
 			}
+#if defined(ANDROID_ENABLE_TCACHE_STATS)
 			if (config_stats) {
 				merged_stats = true;
 				arena_stats_large_nrequests_add(tsd_tsdn(tsd),
@@ -239,6 +246,7 @@
 				    tbin->tstats.nrequests);
 				tbin->tstats.nrequests = 0;
 			}
+#endif
 		}
 		malloc_mutex_unlock(tsd_tsdn(tsd), &locked_arena->large_mtx);
 
@@ -269,6 +277,7 @@
 		    ndeferred);
 		nflush = ndeferred;
 	}
+#if defined(ANDROID_ENABLE_TCACHE_STATS)
 	if (config_stats && !merged_stats) {
 		/*
 		 * The flush loop didn't happen to flush to this thread's
@@ -278,6 +287,7 @@
 		    binind, tbin->tstats.nrequests);
 		tbin->tstats.nrequests = 0;
 	}
+#endif
 
 	memmove(tbin->avail - rem, tbin->avail - tbin->ncached, rem *
 	    sizeof(void *));
@@ -466,17 +476,21 @@
 		cache_bin_t *tbin = tcache_small_bin_get(tcache, i);
 		tcache_bin_flush_small(tsd, tcache, tbin, i, 0);
 
+#if defined(ANDROID_ENABLE_TCACHE_STATS)
 		if (config_stats) {
 			assert(tbin->tstats.nrequests == 0);
 		}
+#endif
 	}
 	for (unsigned i = NBINS; i < nhbins; i++) {
 		cache_bin_t *tbin = tcache_large_bin_get(tcache, i);
 		tcache_bin_flush_large(tsd, tbin, i, 0, tcache);
 
+#if defined(ANDROID_ENABLE_TCACHE_STATS)
 		if (config_stats) {
 			assert(tbin->tstats.nrequests == 0);
 		}
+#endif
 	}
 
 	if (config_prof && tcache->prof_accumbytes > 0 &&
@@ -531,6 +545,7 @@
 
 void
 tcache_stats_merge(tsdn_t *tsdn, tcache_t *tcache, arena_t *arena) {
+#if defined(ANDROID_ENABLE_TCACHE_STATS)
 	unsigned i;
 
 	cassert(config_stats);
@@ -551,6 +566,7 @@
 		    tbin->tstats.nrequests);
 		tbin->tstats.nrequests = 0;
 	}
+#endif
 }
 
 static bool
