Memory in Large Language Model (LLM) applications refers to any mechanism by which an application stores and retrieves information for future use. It encompasses two main types of state: persisted state, stored in external databases or durable storage systems, and in-application state, retained only during the active session and disappearing when the application restarts. LLM models are inherently stateless, processing each query as a standalone task based solely on the current input. However, for applications requiring context continuity, managing memory and state is essential to deliver consistent, coherent, and efficient user experiences. Effective state management balances the need for long-term context with the costs of storage and retrieval. Strategies include tiering memory to prioritize what's most important, using specialized entities or memory variables, semantic switches, and advanced write and read operations to optimize performance and cost. Evaluating state management is critical to understanding its impact on application performance, and techniques such as running LLMs as judges, incorporating human annotations, and measuring persisted state usage can help refine state management systems. As applications become increasingly complex, the balance between simplicity and intelligence in state management will be crucial.