The lifetime of an object in the string pool is governed by the same rules as any other object. An object will continue to exist as long as it is reachable. Some time after it becomes unreachable it will be reclaimed.
The only thing that is "different" about a String object that corresponds to literal in a class is that the object is reachable via the code for the class. Normally, the lifetime of the code of a class is the lifetime of the JVM. However, if the class was dynamically loaded, and you then proceed to make the classloader that loaded it unreachable, etcetera, then the class may be come unreachable, and hence the literal objects may become unreachable.
I just want to know that what is the life of that variable in StringPool. is it application level or JAVA environment level.
It is not clear what you mean by "application level" and "Java environment level", but under normal circumstances the lifetime of the running application is the same as the lifetime of the JVM. But either way, it is all determined by reachability analysis; i.e the "tracing" process that the GC uses to determine if an object can still be used in the computation.
Actually, this statement in your Question is arguably incorrect.
All we know that JVM stores String variables in a separate StringPool.
In fact, in Java 7 the string pool is actually stored in the regular heap, not the permgen heap. (And besides, you really means String objects not String variables. Objects and variables are not the same thing at all ...)