programming languages – How do they make programs so lightweight?

It is not the language but it may have something to do with the platform (Java, .NET, native compiler, scripting engine).

From what you provide it is hard to tell. Are you running the program in the debugger? Try running the release version on its own. Then look for images and how they are used. They could be all pre-loaded, images are relatively big compared to logic. The screen image may be updated more often than needed, look for threads in the source code to find out. Finally, a managed code programming environment like Java will use some kind of runtime that optimizes thing in the background. It may reserve an awful lot of memory just because it is there. This even the programmer of the application has little control over. Even 15 MB seems a lot for an alarm/clock application by the way.