You probably need to look at your design.Having Millions of strings is probably not a good idea/design.
Although not sure what exactly your design is,you can tune your strings using
- StringBuilder
- String interning
With a normal string object ,every modification on the string creates a new string object and this can bring unnecessary memory pressure.You can alleviate this problem using the stringbuilder class.The StringBuilder object maintains a internal character array and any modifications doesnt create a new string object,rather the internal character array is modified.The string is obtained by calling the ToString() on the StringBuilder object.
More here
http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx
String interning is a process where you place unique strings on a common pool and is shared across applications.This reduces the need to create a string if it is already created and interned in the pool.
More here
http://msdn.microsoft.com/en-us/library/system.string.intern.aspx