It sounds like you are executing the program and then -when it quits- start it again in the same (or another) terminal window. That means you're creating different JVMs. Variables (static or not) are only kept alive within a JVM, meaning you need to keep the JVM running, and then -when you repeatedly add values- will the number of objects increase. If you want to persist objects between JVM invocations, have a look at serialization. If you want to keep the JVM up and running, some kind of application server would be required.
Static variables are shared among all instances of a class within a single Java virtual machine (JVM). If you run the same program twice in two different console windows, you're running two separate, unrelated JVMs, and each has its own copy of that static variable. There's no way to make multiple JVMs share the same variable. What you would have to do is make multiple JVMs communicate with one JVM that "owns" the variable. This is called "distributed computing." There are many different ways to do this in Java -- RMI, CORBA, HTTP, raw sockets. You can learn about all of them in the Java Tutorial.