Skip to content

Instantly share code, notes, and snippets.

@cdsap
Created February 17, 2026 22:07
Show Gist options
  • Select an option

  • Save cdsap/90d15072b5e76ff8cdb750a1c7d76d04 to your computer and use it in GitHub Desktop.

Select an option

Save cdsap/90d15072b5e76ff8cdb750a1c7d76d04 to your computer and use it in GitHub Desktop.
Gradle User Home storage breakdown
#!/usr/bin/env bash
set -euo pipefail
GRADLE_HOME="${1:-$HOME/.gradle}"
CACHES="$GRADLE_HOME/caches"
# human readable formatter (KB -> IEC)
human_kb() {
awk 'function human_bytes(b) {
s="B KB MB GB TB PB";
split(s,arr," ");
for(i=1; b>=1024 && i<6; i++) b/=1024;
return sprintf("%.1f %s", b, arr[i]);
}
{print human_bytes($1*1024)}'
}
du_kb() {
# returns size in KB (0 if missing)
local p="$1"
if [[ -e "$p" ]]; then
du -sk "$p" 2>/dev/null | awk '{print $1}'
else
echo "0"
fi
}
echo "Gradle User Home: $GRADLE_HOME"
echo
############################
# 1) High-level buckets
############################
echo "== Cache areas =="
tmp=$(mktemp)
areas=(
"caches/build-cache-1"
"caches/transforms-3"
"caches/transforms-2"
"caches/modules-2"
"caches/jars-9"
"caches/jars-8"
"caches/journal-1"
"caches/kotlin-dsl"
"caches/*/fileHashes"
"wrapper"
"daemon"
"native"
"notifications"
".tmp"
)
for rel in "${areas[@]}"; do
shopt -s nullglob
matches=("$GRADLE_HOME"/$rel)
shopt -u nullglob
total=0
for p in "${matches[@]}"; do
kb=$(du_kb "$p")
total=$(( total + kb ))
done
printf "%s\t%s\n" "$total" "$rel" >> "$tmp"
done
sort -nr "$tmp" | while IFS=$'\t' read -r kb name; do
size=$(echo "$kb" | human_kb)
printf "%-40s %12s\n" "$name" "$size"
done
rm "$tmp"
echo
############################
# 2) Versioned Gradle caches
############################
echo "== caches/<gradle-version>/ (Gradle distributions & version-specific caches) =="
if [[ ! -d "$CACHES" ]]; then
echo "No caches directory found at $CACHES"
exit 0
fi
tmp2=$(mktemp)
# Match folders like: 8.10.2, 8.14.1, 8.9, 9.2.1, etc.
# (avoid non-version dirs like build-cache-1, modules-2, transforms-3...)
for d in "$CACHES"/*; do
[[ -d "$d" ]] || continue
base=$(basename "$d")
if [[ "$base" =~ ^[0-9]+(\.[0-9]+){1,3}(-.+)?$ ]]; then
kb=$(du_kb "$d")
printf "%s\t%s\n" "$kb" "$base" >> "$tmp2"
fi
done
if [[ ! -s "$tmp2" ]]; then
echo "No versioned Gradle directories found under $CACHES"
rm "$tmp2"
exit 0
fi
sort -nr "$tmp2" | while IFS=$'\t' read -r kb ver; do
size=$(echo "$kb" | human_kb)
printf "%-10s %12s\n" "$ver" "$size"
done
# total for all versioned dirs
total_kb=$(awk -F'\t' '{sum+=$1} END{print sum+0}' "$tmp2")
echo
echo -n "TOTAL "
echo "$total_kb" | human_kb | awk '{printf "%12s\n",$0}'
rm "$tmp2"
Gradle User Home: /Users/users/.gradle
== Cache areas ==
caches/modules-2 18.6 GB
.tmp 6.3 GB
wrapper 5.1 GB
caches/jars-9 1.1 GB
caches/build-cache-1 565.0 MB
daemon 401.3 MB
caches/*/fileHashes 170.4 MB
caches/journal-1 15.8 MB
native 7.0 MB
notifications 24.0 KB
caches/transforms-3 0.0 B
caches/transforms-2 0.0 B
caches/kotlin-dsl 0.0 B
caches/jars-8 0.0 B
== caches/<gradle-version>/ (Gradle distributions & version-specific caches) ==
9.2.1 7.5 GB
8.10.2 2.7 GB
9.3.0 2.6 GB
8.13 2.5 GB
9.3.1 2.4 GB
9.1.0 2.2 GB
8.14.3 1.5 GB
8.14.1 1.2 GB
9.2.0 1.0 GB
9.0.0 933.0 MB
8.12.1 703.5 MB
9.4.0-rc-1 650.1 MB
8.14 645.0 MB
8.6 163.1 MB
8.9 56.0 KB
8.5-rc-3 48.0 KB
TOTAL 26.7 GB
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment