Use MyEclipse to start Tomcat report Java heap space, PermGen space error, heap memory is insufficient, PermGen memory is low
Need to increase Tomcat boot key parameters Xmx and Xx:maxpermsize
PermGen is a permanent area of memory that holds the class and method objects, as well as the string object
(Sun Original: Permanent generation is the area of the heap where class and method objects are stored. If an application loads a very large number of classes and then the size of the permanent generation might need to be increas Ed using the-xx:maxpermsize option.
Interned java.lang.String objects is also stored in the permanent generation. The Java.lang.String class maintains a pool of strings. When the Intern method was invoked, the method checks the pool to see if a equal string is already in the pool. If there is and then the Intern method returns it; Otherwise it adds the string to the pool. In more precise terms, the Java.lang.String.intern method was used to obtain the canonical representation of the String; The result is a reference to the same class instance that would being returned if that string appeared as a literal. If an application interns a huge number of strings, the permanent generation might need to being increased from its default s Etting. When this kind of error occurs, the text String.intern or Classloader.defineclass might appear near the top of the stack T Race is printed. The Jmap-permgen command prints statistics for the objects of the permanent generation, including information about Inter Nalized String instances. See 2.6.4 Getting information on the Permanent Generation.
)
PermGen is also a special memory area: Classloader loaded East is not recyclable, they are placed in the PermGen
(Tomcat Original: Why does the memory usage increase when I redeploy a Web application? Because the Classloader (and the Class objects it loaded) cannot be recycled. They is stored in the permanent heap generation by the JVM, and if you redepoy a new class loader is created, which LOA DS Another copy of all these classes. This can cause oufofmemoryerrors eventually.)
Back to my question come on, open%java_home%bin\jvisualvm.exe (jdk6 above there)
To view Tomcat's memory situation, click the Tomcat tab under Monitor, and when used heap = max heap used PermGen = Max PermGen, Tomcat is still in the boot, and an error will be found;
Since the SERVER->TOMCAT->TOMCATX.X->JDK parameter in MyEclipse has been set to-xms64m-xmx512m-xx:maxpermsize=80m
But the Max heap in the monitor screen is 256M
Click on the Overview tab and find the JVM parameters as follows:
-xms64m
-xmx512m
-xx:maxpermsize=80m
-xms64m
-xmx256m
It is clear that Tomcat used the final settings-xms64m-xmx256m; this is the VM boot parameter in MyEclipse's properties-"java->installed JREs", double-click the default enabled JRE, remove the parameters or set to-xms64m -xmx512m
Go back to SERVER->TOMCAT->TOMCATX.X->JDK and change-xx:maxpermsize=80m to-xx:maxpermsize=128m.
Save and then start Tomcat,ok
In addition, continuous monitoring of Tomcat memory using JVISUALVM found that the memory usage of the heap area was reduced steadily after a peak and the memory was recycled;
While the memory of the PermGen region is increasing to a peak, it no longer increases, but then the memory of this area is not recycled, verifying the above statement;
Two more words: The dynamic loading of Java derived from a number of frameworks, in the space also exposed problems, reflection in time also has an efficiency problem: The following is a group of test data:
Java version 1.6.0_13
Java HotSpot (TM) Client VMS
11.3-b02
Sun Microsystems INC.
Direct Access using member field:
47 125 47) 46 46
Average time = Ms.
Reference access to member field:
109 109 110) 94 109
Average Time = 106 Ms.
Reflection access to member field:
13094 12984 13063) 13062 13094
Average time = 13051 Ms.
Java version 1.6.0_13
Java HotSpot (TM) Client VMS
11.3-b02
Sun Microsystems INC.
Direct Call using member field:
47 31 109) 109 31
Average time = Ms.
Direct call using passed value:
16 16 16) 31 15
Average time = Ms.
Call to object using member field:
46 47 47) 47 32
Average time = Ms.
Call to object using passed value:
15 16 31) 16 16
Average time = Ms.
Reflection Call using member field:
812 782 844) 844 844
Average time = 829 Ms.
Reflection call using passed value:
938 953 954) 1031 953
Average time = 973 Ms.
Java version 1.6.0_13
Java HotSpot (TM) Client VMS
11.3-b02
Sun Microsystems INC.
Direct Object Creation:
62 47 78) 32 93
Average time = Ms.
Reflection Object Creation:
125 94 94) 109 187
Average Time = 121 Ms.
Direct Byte[8] Creation:
125 187 94) 172 94
Average Time = 137 Ms.
Reflection Byte[8] Creation:
266 171 187) 188 219
Average time = 191 Ms.
Direct byte[64] Creation:
250 172 156) 125 203
Average Time = 164 Ms.
Reflection byte[64] Creation:
281 219 203) 203 219
Average Time = 211 Ms.
A gorgeous upper layer requires a solid underlying foundation
Http://wiki.apache.org/tomcat/FAQ/Deployment
Http://download.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/memleaks.html#gbyuu
Java heap space, PermGen space error using JVISUALVM monitoring set a reasonable value