diff --git a/esphome/analyze_memory/cli.py b/esphome/analyze_memory/cli.py index 334427abeef..106bb30b110 100644 --- a/esphome/analyze_memory/cli.py +++ b/esphome/analyze_memory/cli.py @@ -191,11 +191,13 @@ class MemoryAnalyzerCLI(MemoryAnalyzer): for i, (_, demangled, size, section, component) in enumerate(top_symbols): # Format section label section_label = f"[{section[1:]}]" if section else "" - # Truncate demangled name if too long + # Format storage symbols readably + display_name = _format_pstorage_name(demangled) + # Truncate if too long demangled_display = ( - f"{demangled[:truncate_limit]}..." - if len(demangled) > self.COL_TOP_SYMBOL_NAME - else demangled + f"{display_name[:truncate_limit]}..." + if len(display_name) > self.COL_TOP_SYMBOL_NAME + else display_name ) lines.append( f"{i + 1:>2}. {size:>7,} B {section_label:<8} {demangled_display:<{self.COL_TOP_SYMBOL_NAME}} {component}" diff --git a/esphome/cpp_generator.py b/esphome/cpp_generator.py index d64e2ff2ce7..e97bd71a48d 100644 --- a/esphome/cpp_generator.py +++ b/esphome/cpp_generator.py @@ -586,8 +586,11 @@ def Pvariable(id_: ID, rhs: SafeExpType, type_: "MockObj" = None) -> "MockObj": the_type = id_.type # Extract component namespace from type for memory analysis attribution type_str = str(the_type) - if "::" in type_str: - component_ns = type_str.split("::", maxsplit=1)[0].rstrip("_") + # Strip leading esphome:: to get the component namespace + # e.g. esphome::dsmr::Dsmr -> dsmr, logger::Logger -> logger + bare = type_str.removeprefix("esphome::") + if "::" in bare: + component_ns = bare.split("::", maxsplit=1)[0].rstrip("_") else: component_ns = "esphome" storage_name = f"{component_ns}__{id_.id}__pstorage"