Android App Support crashes after starting because VM runs out of heap

It seems I found a solution that has worked for me (for now?)

First I recorded several logcat logs:

defaultuser in 🌐 Xperia10III in ~ as šŸ§™ 
🐟 āÆ while true;sudo appsupport-attach /system/bin/logcat | grep -E 'system_server|AndroidRuntime' | tee ~/$(date +%Y%m%d%H%M%S%z-logcat.log);find -maxdepth 1 -iname '*-logcat.log' -empty -delete;sleep 1;end
<lots of output>
defaultuser in 🌐 Xperia10III in ~ as šŸ§™ 
🐟 āÆ ls
20260505103008+0200-logcat.log  20260505104152+0200-logcat.log  20260505104611+0200-logcat.log  20260505105015+0200-logcat.log  *************     Pictures/
20260505103714+0200-logcat.log  20260505104223+0200-logcat.log  20260505104641+0200-logcat.log  20260505105045+0200-logcat.log  android_storage/  Playlists/
20260505103745+0200-logcat.log  20260505104254+0200-logcat.log  20260505104712+0200-logcat.log  20260505105120+0200-logcat.log  ***********       Public/
20260505103808+0200-logcat.log  20260505104338+0200-logcat.log  20260505104745+0200-logcat.log  20260505105153+0200-logcat.log  Desktop/          Templates/
20260505103837+0200-logcat.log  20260505104409+0200-logcat.log  20260505104815+0200-logcat.log  20260505105225+0200-logcat.log  Documents/        Videos/
20260505104012+0200-logcat.log  20260505104441+0200-logcat.log  20260505104845+0200-logcat.log  20260505105258+0200-logcat.log  Downloads/        ******
20260505104045+0200-logcat.log  20260505104511+0200-logcat.log  20260505104915+0200-logcat.log  20260505105329+0200-logcat.log  **************
20260505104118+0200-logcat.log  20260505104541+0200-logcat.log  20260505104944+0200-logcat.log  20260505105451+0200-logcat.log  Music/

I then grepped for the OutOfMemoryError:

🐟 āÆ grep -A30  'OutOfMemory' *-logcat.log | grep 'OutOfMemory\|\bat\b'

And this UsageStats thing kept popping up:

...
0260505104338+0200-logcat.log:05-05 10:43:55.744   315   341 E AndroidRuntime: java.lang.OutOfMemoryError: Failed to allocate a 104 byte allocation with 172
5536 free bytes and 1685KB until OOM, target footprint 268435456, growth limit 268435456; giving up on allocation because <1% of heap free after GC.         
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at com.android.server.usage.UsageStatsProtoV2.parseEvent(UsageStatsPr
otoV2.java:237)                                                                                                                                              
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at com.android.server.usage.UsageStatsProtoV2.read(UsageStatsProtoV2.
java:498)                                                                                                                                                    
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at com.android.server.usage.UsageStatsDatabase.readLocked(UsageStatsD
atabase.java:1148)                                                                                                                                           
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at com.android.server.usage.UsageStatsDatabase.readLocked(UsageStatsD
atabase.java:1102)                                                                                                                                           
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at com.android.server.usage.UsageStatsDatabase.readLocked(UsageStatsD
atabase.java:1085)                                                                                                                                           
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at com.android.server.usage.UsageStatsDatabase.getLatestUsageStats(Us
ageStatsDatabase.java:747)                                                                                                                                   
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at com.android.server.usage.UserUsageStatsService.loadActiveStats(Use
rUsageStatsService.java:898)                                                                                                                                 
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at com.android.server.usage.UserUsageStatsService.rolloverStats(UserU
sageStatsService.java:849)                                                                                                                                   
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at com.android.server.usage.UserUsageStatsService.reportEvent(UserUsa
geStatsService.java:316)                                                                                                                                     
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at com.android.server.usage.UsageStatsService.reportEvent(UsageStatsS
ervice.java:1168)                                                                                                                                            
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at com.android.server.usage.UsageStatsService.onUserUnlocked(UsageSta
tsService.java:460)                                                                                                                                          
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at com.android.server.usage.UsageStatsService.-$$Nest$monUserUnlocked
(Unknown Source:0)                                                                                                                                           
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at com.android.server.usage.UsageStatsService$H.handleMessage(UsageSt
atsService.java:1927)                                                                                                                                        
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at android.os.Handler.dispatchMessage(Handler.java:106)              
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at android.os.Looper.loopOnce(Looper.java:201)                       
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at android.os.Looper.loop(Looper.java:288)                           
20260505104338+0200-logcat.log-05-05 10:43:55.744   315   341 E AndroidRuntime:         at android.os.HandlerThread.run(HandlerThread.java:67)   
...

So I searched for files or folders named usagestats:

🐟 āÆ sudo find /home -type d -name "usagestats" 2>/dev/null
/home/.appsupport/instance/defaultuser/data/system_ce/0/usagestats

As nothing was working anyway, I thought I’d just move that directory out of the way, while stopping the appsupport completely:

🐟 āÆ sudo systemctl stop appsupport@defaultuser.service
🐟 āÆ sudo mv /home/.appsupport/instance/defaultuser/data/system_ce/0/usagestats{,.bak}
🐟 āÆ sudo systemctl restart appsupport@defaultuser.service

After that, I can use Android apps as usual, no crashes. :partying_face:

2 Likes