C-8 recurring low-memory warnings / slow or missed automations

My Hubitat C-8 (f/w 2.5.0.159) repeatedly develops low-memory warnings, sometimes accompanied by slow or missed automations. It currently has 159 devices and 139 apps.

I used ChatGPT to analyze App Stats, Device Stats, and five-minute memory readings collected across two reboot cycles. The App and Device Stats did not identify an obvious runaway app, driver, pending-event backlog, or unusually large device state.

During the first cycle, Free OS memory fell to approximately 20 MB after 23 days. A normal reboot restored the settled Free OS memory to approximately 200 MB.

During the next cycle, Free OS memory declined much faster:

  • Approximately 42 MB free after less than seven days

  • Lowest recorded reading of approximately 28 MB

  • Most recent 24-hour median of approximately 59 MB

At the same uptime during the previous cycle, Free OS memory was approximately 82 MB. CPU/load also increased as memory declined, while Direct Java remained around 8 MB and did not account for most of the memory loss.

The overall finding is a repeatable Free OS memory decline that temporarily clears after rebooting. The second cycle declined faster than the first, but the available statistics have not identified the responsible app, driver, integration, or platform process.

I retained the complete memory-history exports and App and Device Stats screenshots, if needed. I would appreciate any feedback and guidance from Hubitat support and community members.

I hate to be the one to say it but maybe there’s a reason Hubitat added memory to their Pro Hub? :smiley:

As features are added, and although you’re not on ‘the latest’, it’s probably consuming more memory than a year ago and that tiny bit more is enough that the number of connected devices and apps you have has hit a limit. Someone else with the same number but a different mix, might be OK still.

If there’s time to run some experiments, you can always take a backup and then delete half your Apps. Yea, it’s not going to be a fully functional hub, but you can watch the memory consumption over a short time frame and compare.

You can reboot, and then watch memory for 2 hours, for example. Then after deleting a bunch of apps, freeing memory, what’s the ‘slope’ of memory after a reboot?

Obviously at any moment, you can restore the backup and have all your apps back.

It’s not a great test, because longer would be better, but it might tell you to ignore this response :smiley: and find another culprit.

Is one of your apps Hubitat Diagnostics? I find it extra useful - especially the performance tab which can look at load and other valuable stats that might help pinpoint…

What @csteele said is very true.

I have a C8-Pro, more than double your numbers. What I learned a long time ago was to offload the heavy hitters. For example, I’m heavily in to Unifi, but Unifi on my hub is light weight. Better memory management and CPU running on a secondary device. I did this with all of the apps/integations that were memory or CPU hogs.

Do I ever get a warning? I haven’t had one in a long time. Doesn’t mean one won’t pop up, nor that it’s anything to worry about necessarily if it does.

Is my setup straight forward? Oh hell no. Distributed, logical, low latency, reliable - yes.

And as @csteele said, your mix of devices, apps, etc., make a huge difference.

How much you make the hub do with some of the apps will also greatly influence performance. This includes the built in apps (see previous mention of Unifi, lol).

You don't mention what types of devices, nor what your automations consist of.

At times I have found Maker API, and other cloud based integrations can be heavy hitters. You also might have a spammy device, certain thermostats have been issues in the past as well as power reporting devices.

I know you said you had AI take a look, but maybe posting a few screenshots here would help others to understand what your hub is doing.

Since I am also running a C8 with even more devices and apps, I take offense at the off-hand recommendations to go to a C8Pro.

Until about 6 weeks ago my hub was experiencing similar sluggishness. It was always over 20% CPU losd and the CPU temperature was always over 130F. While my free memory never got to level that @yashvind is experiencing, it was low enough to make the hub sluggish due to memory and cleanup issues.

At first I started looking at the sheer number of events. For all 9 of our motorized shades, I had 4 levels of rules from sun position, to sun angles on each window, to calculated shade height and finally moving the shades. I eliminated a multitude of events by treating level 2-4 rules as subroutines.

At the same time John Land posted his Device Logging and Rule Logging apps. That started my quest to reduce logging. That was probably the most effective thing to do.

Also, reducing the update frequency for devices that are only used for information is a good thing.

Now my free memory typically stays above 80MB instead of frequently going below 60MB. This seems to have settled down the periodoc memory cleanup routine.

Now my hub runs below 120F and 20% CPU Load.

In my experience, run away devices or rules are rare. Asking the hub to do too much is a very easy thing to do. What I was putting on the hub slowly grew over time.

Throwing more hardware at a problem isn't always the best solution.r

I agree, number of apps and devices is pretty meaningless. I mean, I have 452 devices and 72 apps on my C8. My custom apps contain all my automations, and some individual apps are pretty busy. Many of my devices are just virtual child devices to my automation apps.

I know I have simply outgrown the C8, and everything is stable if I am not actively doing anything with the UI. It doesn't take much for me to get a hub load elevated warning, though it goes away pretty quickly once I stop poking things. I do get memory low warnings occasionally, but they also clear themselves, usually. If they don't clear I reboot now. I ran for weeks with a memory warning a few months ago since everything was still working well, but then all the backups taken during that time were corrupted once the hub crashed, so I had to use a really old backup and then redo things, which was quite the pain. In the middle of that episode I ordered a C8 Pro.

Summer projects and adventures have taken up my weekends, so that C8 Pro is still sitting on my desk. Every weekend is migration weekend, until it isn't again. I'm going to get there eventually. Meanwhile, the C8 is trucking along pretty well for the most part, and taking the load. I am curious what type of improvements I will see with the Pro when I get there. Going camping for two weeks starting this weekend, so next target day for migration is the 2nd weekend of August. Maybe.

Sure, what information would be most helpful?

This appears to be a relatively recent issue. My devices, integrations, and automations have been stable for a long time, with no significant additions or changes before the memory warnings started.

I have approximately 160 devices and 50–60 rules/automations, many of which are disabled or paused and nothing crazy logic. I keep logging to a minimum unless it is temporarily needed for a specific device or rule.

Before rebooting, I reviewed the App and Device Stats. Apps used 1.7% of total uptime, device drivers used 0.9%, there were no pending events, and nothing stood out as a clear runaway app or device.

So it looks like this thread started mainly about low memory and radios being sluggish. Memory consumption doesn't show up in those tables the same way. That is more about cpu usage. I dont think we have great ways to look at memory usage. It is generally limited to state size.

Allot of things can effect memory and certain activities can cause high consumption. Unfortunately high memory consumtions is simply about the combination of your usage. The Jave VM will naturally clean up memory based of various usage and time values. If it isn't you probably just outgrew the hub. Though I agree with one of the posts of above that throughing hardware at it is less then optimal when it comes to memory usage there really isn't much of a better option.

Which app is this?

I think I found it - https://raw.githubusercontent.com/hubitrep/hubitat/refs/heads/main/HubDiagnostics/HubDiagnostics.groovy

Below are some stats from Hub Diagnostics app.

### System & Health
| | |
|---|---|
| Model | C-8 |
| Firmware | 2.5.0.159 |
| Uptime | 7d 15h 33m 38s |
| Connection | Ethernet (DHCP) |
| IP Address | XXXXXXXXXXXXX|
| DNS        | XXXXXXXXXXXXX |
| CPU Load (5m) | 0.61 |
| Free OS Memory | 49 MB |
| Free Java Heap  | 71 MB |
| Total Java Heap | 324 MB |
| Temperature | 118.4°F |
| Database | 21 MB |
| State Compression | Disabled |
| Max Events/Device | 11 |
| Max Event Age | 31 days |
| Max State Age | 7 days |

### Alerts
- **critical**: OS memory critically low (49 MB)
- **critical**: 1 Z-Wave ghost node — no Hubitat device, remove from mesh
- **warning**: Hub Low Memory
- **info**: Hub is running low on memory.

### Devices
| | |
|---|---|
| Total | 160 |
| Active | 115 |
| Inactive | 38 |
| Disabled | 7 |
| Zigbee | 14 |
| Z-Wave | 49 |
| Matter | 8 |
| LAN (Bridge) | 34 |
| Cloud | 26 |
| Virtual | 13 |
| Other | 16 |

**By Integration:**

| Integration | Count |
|---|---|
| Lutron | 34 |
| Ecobee | 7 |
| Group-2.1 | 5 |
| Sonos | 5 |
| Unofficial Ring | 2 |
| Kasa | 2 |
| Govee Integration v2 | 1 |

**Low Battery:** Kid1's Blind Remote (0%), Breakfast Blind 1 - Remote (0%), Breakfast Blind 2 - Remote (0%), Breakfast Blind 3 - Remote (0%), (Ring) Front Doorbell Motion Sensor (0%), (Ring) Mud Room Contact Sensor (0%), Mudroom Keypad (0%), Dining Room Blind -Remote (0%), Her1's Office Blind - Remote (15%), Sunroom Blind  3 - Remote (10%), Sunroom Blind 1 - Remote (0%), Sunroom Blind 3 - Remote (0%), Sunroom Blind 4 - Remote (0%)

**Inactive Devices (38):** Kid1's Blind Remote, Kid2's Heater, Aeotec Range Extender - Downstairs, Aeotec Range Extender - Upstairs, Bathroom LED 1, Breakfast Blind 1 - Remote, Breakfast Blind 2 - Remote, Breakfast Blind 3 - Remote, Dining Room Blind -Remote, Downstairs Blinds Single Channel Remote, Garage Govee Strip, Guest Bedroom Lights, Guest Room Fan, Holiday Light - Office GE Switch, Jack & Jill Heater … (+23 more)

### Apps
- **Total:** 93 (Built-in: 89, User: 4)

**Installed User Apps:**
- Govee Integration v2
- Hub Diagnostics
- Hubitat Package Manager
- Unofficial Ring Connect

**Installed Built-in Apps:**
- AirPlay Integration
- Amazon Echo Skill
- Basic Rule-1.0 (×4)
- Basic Rules
- Chromecast Integration
- Dashboard (×7)
- Device Firmware Updater
- Easy Dashboard
- Easy Dashboard Parent
- Ecobee Integration
- Group-2.1 (×5)
- Groups and Scenes
- HomeKit Bridge
- Hubitat® Dashboard
- Kasa Integration
- Lock Code Manager
- Lutron Integration
- Lutron Integrator
- Mode Manager
- Mode Switches
- Motion Lighting (×4)
- Motion and Mode Lighting Apps
- Notifications
- Preference Manager
- Room Lighting
- Room Lights (×4)
- Rule Machine
- Rule Machine Legacy
- Rule-4.0 (×8)
- Rule-4.1
- Rule-5.1 (×18)
- Simple Automation Rule 1.1 (×4)
- Simple Automation Rule 1.2 (×4)
- Simple Automation Rules
- Sonos Integration
- Thermostat Controller 2.0
- Thermostat Controllers
- Thermostat Schedulers
- Visual Rules Builder
- Zone Motion Controllers

### Z-Wave
- **Enabled:** Yes, **Healthy:** Yes
- **Version:** 7.18 (Protocol 7.18), **Region:** USLR
- **Z-Wave JS:** No
- **Nodes:** 49
- **Avg PER:** 0.0%, **Avg RSSI:** 23 dBm, **Route Changes:** 0

**Ghost Nodes (1, no Hubitat device):**
- Node 39: Somfy 2 Button Controller [no device, no route]

| Node | Name | Security | RTT | PER | RSSI | Route | Msgs/min | Driver |
|---:|---|---|---:|---:|---|---|---:|---|
| 2 | Office Blind | None | — | 0% | 12dB | 01 -> 02 40kbps | 0.2 | Built-in |
| 3 | Aeotec Range Extender - Downstairs | None | — | 0% | — | 01 -> 03 | 0.0 | Built-in |
| 4 | Aeotec Range Extender - Upstairs | None | — | 0% | — | 01 -> 04 | 0.0 | Built-in |
| 5 | Office Blind Remote | None | — | 0% | — | 01 -> 05 | 0.0 | Built-in |
| 7 | Sunroom Blind 2 | None | — | 0% | 14dB | 01 -> 07 40kbps | 0.2 | Built-in |
| 8 | Sunroom Blind 3 | None | — | 0% | 25dB | 01 -> 08 40kbps | 0.2 | Built-in |
| 9 | Sunroom Blind 4 | None | — | 0% | 24dB | 01 -> 09 40kbps | 0.2 | Built-in |
| 11 | Breakfast Blind 2 | None | — | 0% | 27dB | 01 -> 0B 40kbps | 0.2 | Built-in |
| 12 | Breakfast Blind 3 | None | — | 0% | 26dB | 01 -> 0C 40kbps | 0.2 | Built-in |
| 13 | Sunroom Blind 1 | None | — | 0% | 25dB | 01 -> 04 -> 0D 40kbps | 0.2 | Built-in |
| 14 | Breakfast Blind 1 | None | — | 0% | 24dB | 01 -> 0E 40kbps | 0.2 | Built-in |
| 20 | Master Bedroom Light Blind 1 | None | — | 0% | 24dB | 01 -> 14 | 0.1 | User |
| 21 | Master Bedroom Dark Blind 1 | None | — | 0% | 23dB | 01 -> 20 -> 35 -> 15 40kbps | 0.1 | User |
| 22 | Master Bedroom Light Blind 2 | None | — | 0% | — | 01 -> 16 | 0.0 | User |
| 23 | Master Bedroom Dark Blind 2 | None | — | 0% | 26dB | 01 -> 17 | 0.1 | User |
| 24 | Master Bedroom Light Blind 3 | None | — | 0% | 26dB | 01 -> 18 | 0.1 | User |
| 25 | Master Bedroom Dark Blind 3 | None | — | 0% | 26dB | 01 -> 19 | 0.1 | User |
| 26 | Master Bedroom Light Blind 4 | None | — | 0% | — | 01 -> 1A | 0.0 | User |
| 27 | Master Bedroom Dark Blind 4 | None | — | 0% | 25dB | 01 -> 1B | 0.1 | User |
| 28 | Front Porch Sensor (Aeon) | None | — | 0% | — | 01 -> 1C | 4.6 | Built-in |
| 29 | Holiday Light - Office GE Switch | None | — | 0% | — | 01 -> 1D | 0.0 | Built-in |
| 30 | Breakfast Window Sensor | None | — | 0% | 25dB | 01 -> 1E 40kbps | 0.0 | Built-in |
| 32 | Downstairs Bathroom Light | None | — | 0% | 25dB | 01 -> 20 100kbps | 0.1 | Built-in |
| 34 | Pantry Light | None | — | 0% | 28dB | 01 -> 22 100kbps | 0.0 | Built-in |
| 36 | Master Bathroom Closet Motion Sensor | None | — | 0% | 26dB | 01 -> 30 -> 24 40kbps | 0.1 | Built-in |
| 37 | Sunroom Blind 1 - Remote | None | — | 0% | — | 01 -> 25 | 0.0 | Built-in |
| 38 | Node 38 | None | — | 0% | — | 01 -> 26 | 0.0 | — |
| 40 | Breakfast Blind 1 - Remote | None | — | 0% | — | 01 -> 28 | 0.0 | Built-in |
| 41 | Sunroom Blind 4 - Remote | None | — | 0% | — | 01 -> 29 | 0.0 | Built-in |
| 42 | Breakfast Blind 2 - Remote | None | — | 0% | — | 01 -> 2A | 0.0 | Built-in |
| 43 | Breakfast Blind 3 - Remote | None | — | 0% | — | 01 -> 2B | 0.0 | Built-in |
| 44 | Downstairs Blinds Single Channel Remote | None | — | 0% | — | 01 -> 2C | 0.0 | Built-in |
| 45 | Sunroom Blind 3 - Remote | None | — | 0% | — | 01 -> 2D | 0.0 | Built-in |
| 46 | Dining Room Blind | None | — | 0% | 17dB | 01 -> 2E 40kbps | 0.2 | Built-in |
| 47 | Dining Room Blind -Remote | None | — | 0% | — | 01 -> 2F | 0.0 | Built-in |
| 48 | Master Bathroom Walk-in Closet Light | None | — | 0% | 24dB | 01 -> 30 100kbps | 0.0 | Built-in |
| 51 | Recirculating Water Pump | None | — | 0% | 22dB | 01 -> 33 100kbps | 0.1 | Built-in |
| 53 | Stairway LED Strip | None | — | 0% | 27dB | 01 -> 35 100kbps | 0.2 | Built-in |
| 54 | RGBgenie Touch Panel - Foyer | None | — | 0% | — | 01 -> 36 | 0.0 | User |
| 58 | Master Bathroom Shower Light | None | — | 0% | 29dB | 01 -> 3A 100kbps | 0.0 | Built-in |
| 59 | Stairway Lights | None | — | 0% | — | 01 -> 3B | 0.0 | Built-in |
| 60 | 2nd Floor Hallway Lights | None | — | 0% | — | 01 -> 3C | 0.0 | Built-in |
| 61 | Her1's Office Blind | None | — | 0% | 21dB | 01 -> 3D 40kbps | 0.1 | Built-in |
| 62 | Her1's Office Blind - Remote | None | — | 0% | — | 01 -> 3E | 0.0 | Built-in |
| 63 | Zooz MultiRelay Parent - Fireplace | None | — | 0% | 19dB | 01 -> 3F 100kbps | 0.0 | Built-in |
| 76 | 3rd Floor Stairway Light | None | — | 0% | — | 01 -> 4C | 0.0 | Built-in |
| 78 | Zooz Double Plug | None | — | 0% | — | 01 -> 4E | 0.0 | Built-in |
| 80 | Node 80 | None | — | 0% | — | 01 -> 50 | 0.0 | — |
| 81 | Kid1's Blind Remote | None | — | 0% | — | 01 -> 51 | 0.0 | Built-in |
| 84 | Kid1's Blind | None | — | 0% | 24dB | 01 -> 54 | 0.0 | User |

### Zigbee
- **Healthy:** Yes, **State:** ONLINE
- **Channel:** 20
- **Power Level:** 8
- **Devices:** 14
- **Neighbors:** 7
- **LQI:** avg 146, min 103, max 231
- **Weak Neighbors:** BFA9 LQI:103, C352 LQI:105, C56A LQI:136, D134 LQI:114

### Matter
- **Enabled:** Yes, **Installed:** Yes
- **Devices:** 8
- **Network State:** Online
- **Fabric:** 759582C70147D6CD

### Performance
- **Device Runtime:** 1h 36m 17s (0.9% busy)
- **App Runtime:** 3h 2m 14s (1.7% busy)

**Top Device Types by CPU:**
| Device | % Total | Exec Count | Avg (ms) |
|---|---:|---:|---:|
| Thermostat Controller App | 0.253% | 9308 | 179.7 |
| Downstairs Temperature | 0.103% | 22015 | 31.0 |
| Upstairs | 0.100% | 22015 | 30.0 |
| Front Porch Sensor (Aeon) | 0.062% | 50859 | 8.1 |
| Living Room Sonos | 0.023% | 3813 | 40.1 |

**Top App Types by CPU:**
| App | % Total | Exec Count | Avg (ms) |
|---|---:|---:|---:|
| Ecobee Integration | 0.440% | 11194 | 259.9 |
| Thermostat Controller App:   <span style='color:green'>(Free)</span>,  <span style='color:green'>(Free)</span> | 0.268% | 13963 | 126.7 |
| Dining Room Credenza Lights when illuminance less than 1000 lux  | 0.259% | 5177 | 331.1 |
| (Shade) Downstairs Blinds - Nightime Shutdown <span style='color:red'>(Required Expression false)</span> | 0.106% | 874 | 802.1 |
| Amazon Echo Skill | 0.099% | 11846 | 55.4 |

**Top Talkers:**
| Device | Integration | Msgs/min | Total Msgs |
|---|---|---:|---:|
| Front Porch Sensor (Aeon) | Z-Wave | 4.6 | 50859 |
| Linptech Presence Sensor | Zigbee | 1.6 | 18099 |
| Dining Room Credenza Lights | Zigbee | 0.6 | 7099 |
| Breakfast Blind 1 | Z-Wave | 0.2 | 2127 |
| Sunroom Blind 1 | Z-Wave | 0.2 | 1994 |

---
*Generated by Hub Diagnostics v5.83.1*

C-8 running 2.5.0.159. I’m having memory leak issues as well. I had memory leak issues previously that were resolved in a prior release. I used to have a rule that rebooted when it went below 150KB as that’s when I would perceive issues. I’ve paused it to see how it goes and I’m going to let it go. The lowest point is around 119KB. The peak so far today is about 174KB and is sitting at roughly 137KB right now. I cannot say definitively that it started for me with the latest release but it is back.

A few things. Here are my graphs for memory consumption. The top graph is usage. The green is a C8Pro, the yellow is a C8, and the blue is a C7. Only the C8 Pro is my prod hub so it has all of my stuff running on it including Govee Devices with 44 total devices of which 24 are LAN API devices. I see you are running my Govee Integration V2 software. I will admit as you add devices it can become more and more impactful. It also depends on how the devices work as well. How many Govee devices do you have. How many are LAN API Enabled.

Just for Giggles I took my C8 Dev hub and installed everything that was available from my Govee Integration. It initially dropped from around 350 to 150 then recovered to 190. I let it run for a bit to see if what it would maintained and it start to hover around 160. Now you can see that on that graph it has dropped low previously, but that was based on activity like active development, or other changes. Prior to loading all of the Govee devices it was stable around 320-330 with max peaks around 350. It been in that relm since last night when we had a power outage last night. I performed a restart to see where the memory would settle after a clean reboot. it settled in around 215-220. The reboot helped a little but still clearly adding the devices is using about 100mb of ram. So take that as you will. Keep in mind my use case is extreme because of the quantity of devices.

The bottom graph is interesting. The bottom one is about JVM. The blue line in that graph is the JVM Heap size for the C7 and C8 while the Green line below it is related to the C8 Pro. It is interesting that the C8 Pro isn’t holding all of the JVM Heap size from the beginning. The red is the C8 JVM Free heap while the Red is the C7 free Heap. The C8 Pro is orange and is consistently lower then the others. I wonder if there is a reason for that.

There are 2 things that increase memory usage on a permanent basis:

  1. Chatty devices, because all new readings are new database entries, the old ones have to be deleted. My Govee outlets don't seem chattier than my other outlets.

  2. High log settings for devices and apps. Recommend John Land's Device Logging and Rule Logging apps to review your settings. They are available in Package Manager.

Also, just looking at rules saves a new copy every time you click on Done

That is this one - very helpful to find unnecessary logging:

That is a different (but also very helpful) app:

I think that is oversimplifying how memory gets consumed and ignores how memory is cleaned up by Garbage collection.

Database writes though impactful because data is leaving memory doesn’t cause memory to increase per se. In a JVM memory is consumed by running code, objects, variables, ect. Some of it gets cleaned up by Garbage collection once it is no longer used, and expires out based on a few criteria. Some stuff won’t leave memory though. Especially if continually used.

Please don't slam my input because it wasn't as complete as you wanted....
Since I am not a Java person, I can't speak to those items you mentioned.
My comments were based on my decades of database experience.

I apologize if you feel like i slammed your response. Many of us have different experiences. I was just trying to elaborate on it from mine. There are certainly memory consumption aspects related to DB usage.