Java is for many years one of the most popular programming languages, but it is known for its high cold start times and high memory footprint, compared to other programming languages like Node.js and Python. In this talk we'll look at the general best practices and techniques we can use to decrease memory consumption and cold start times for Java Serverless applications on AWS Lambda including GraalVM (Native Image) and AWS own offering SnapStart based on Firecracker microVM snapshot and restore and CRaC (Coordinated Restore at Checkpoint) runtime hooks. We'll also look into the SnapStart priming techniques which help us increase the Lambda performance and explore how AWS Lambda Profiler for Java can help us identify this potential. Additionally we'll introduce AWS Lambda SnapStart Bug Scanner which is the SpotBugs plugin for helping AWS Lambda customers inspect their Lambda functions against potential bugs unique to AWS Lambda SnapStart environment. We'll also explore the impact of the SnapStart snapshot tiered low-latency cache on the Lambda cold start times. Vadym will also provide Lambda functions performance (cold and warm start times) benchmarking for: Deployment package sizes Lambda memory settings Java compilation options Choice of hardware architecture x86 vs arm64 HTTP (a)synchronous clients