Memory VPS上的Java线程问题

Memory VPS上的Java线程问题,memory,locking,jvm,vps,Memory,Locking,Jvm,Vps,我有一个运行Centos的VPS,其中包含以下详细信息: [root@XXXXXXX~]# uname -a Linux xxxxxxxx2.6.32-042stab055.10 #1 SMP Thu May 10 15:38:32 MSD 2012 i686 i686 i386 GNU/Linux 我正在尝试从安装在上面的tomcat运行电子商务系统shopizer。 我曾试图在VPS上构建它,但没有成功,所以我在别处构建了它,并在VPS的tomcat上复制了war文件 我现在和构建过程中

我有一个运行Centos的VPS,其中包含以下详细信息:

[root@XXXXXXX~]# uname -a

Linux xxxxxxxx2.6.32-042stab055.10 #1 SMP Thu May 10 15:38:32 MSD 2012 i686 i686 i386 GNU/Linux
我正在尝试从安装在上面的tomcat运行电子商务系统shopizer。 我曾试图在VPS上构建它,但没有成功,所以我在别处构建了它,并在VPS的tomcat上复制了war文件

我现在和构建过程中面临的问题是,当我运行构建的ant脚本时,构建被挂起。现在,当我启动tomcat服务器时,其详细信息如下:

Server version: Apache Tomcat/6.0.35
Server built:   Nov 28 2011 11:20:06
Server number:  6.0.35.0
OS Name:        Linux
OS Version:     2.6.32-042stab055.10
Architecture:   i386
JVM Version:    1.6.0_24-b24
JVM Vendor:     Sun Microsystems Inc.
服务器在启动时挂起,当我进行线程转储(在本例和构建案例中)时,我得到以下结果:

"GC Daemon" daemon prio=10 tid=0xa09fd000 nid=0x36ef in Object.wait() [0xa08f7000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0xa6c35a88> (a sun.misc.GC$LatencyLock)
    at sun.misc.GC$Daemon.run(GC.java:117)
    - locked <0xa6c35a88> (a sun.misc.GC$LatencyLock)

"Low Memory Detector" daemon prio=10 tid=0xb7686000 nid=0x36ed runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread0" daemon prio=10 tid=0xb7684000 nid=0x36ec runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0xb7682800 nid=0x36eb waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=10 tid=0xb7673000 nid=0x36ea in Object.wait() [0xa0ffe000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0xa6ad0b58> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133)
    - locked <0xa6ad0b58> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:149)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177)

"Reference Handler" daemon prio=10 tid=0xb7671800 nid=0x36e9 in Object.wait() [0xa1198000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0xa6ad0a58> (a java.lang.ref.Reference$Lock)
    at java.lang.Object.wait(Object.java:502)
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
    - locked <0xa6ad0a58> (a java.lang.ref.Reference$Lock)

"main" prio=10 tid=0xb7605c00 nid=0x36e7 runnable [0xb775d000]
   java.lang.Thread.State: RUNNABLE
    at java.lang.Byte$ByteCache.<clinit>(Byte.java:79)
    at java.lang.Byte.valueOf(Byte.java:102)
    - waiting on <0xa6ad0a58> (a java.lang.ref.Reference$Lock)
    at java.lang.Object.wait(Object.java:502)
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
    - locked <0xa6ad0a58> (a java.lang.ref.Reference$Lock)

"main" prio=10 tid=0xb7605c00 nid=0x36e7 runnable [0xb775d000]
   java.lang.Thread.State: RUNNABLE
    at java.lang.Byte$ByteCache.<clinit>(Byte.java:79)
    at java.lang.Byte.valueOf(Byte.java:102)
    at com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter.<init>(DefaultTypeConverter.java:59)
    at com.opensymphony.xwork2.conversion.impl.XWorkConverter.<init>(XWorkConverter.java:186)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
    at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:419)
    at com.opensymphony.xwork2.inject.ContainerBuilder$5.create(ContainerBuilder.java:207)
    at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:51)
    - locked <0xa18cf408> (a com.opensymphony.xwork2.inject.ContainerImpl)
    at com.opensymphony.xwork2.inject.ContainerImpl$ParameterInjector.inject(ContainerImpl.java:462)
    at com.opensymphony.xwork2.inject.ContainerImpl.getParameters(ContainerImpl.java:477)
    at com.opensymphony.xwork2.inject.ContainerImpl.access$000(ContainerImpl.java:34)
    at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:293)
    at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:431)
    at com.opensymphony.xwork2.inject.ContainerBuilder$5.create(ContainerBuilder.java:207)
    at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:51)
    - locked <0xa18cf408> (a com.opensymphony.xwork2.inject.ContainerImpl)
    at com.opensymphony.xwork2.inject.ContainerImpl$ParameterInjector.inject(ContainerImpl.java:462)
    at com.opensymphony.xwork2.inject.ContainerImpl.getParameters(ContainerImpl.java:477)
    at com.opensymphony.xwork2.inject.ContainerImpl.access$000(ContainerImpl.java:34)
    at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:293)
    at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:431)
    at com.opensymphony.xwork2.inject.ContainerBuilder$5.create(ContainerBuilder.java:207)
    at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:51)
    - locked <0xa18cf408> (a com.opensymphony.xwork2.inject.ContainerImpl)
    at com.opensymphony.xwork2.inject.ContainerImpl$ParameterInjector.inject(ContainerImpl.java:462)
    at com.opensymphony.xwork2.inject.ContainerImpl.getParameters(ContainerImpl.java:477)
    at com.opensymphony.xwork2.inject.ContainerImpl.access$000(ContainerImpl.java:34)
    at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:293)
    at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:431)
    at com.opensymphony.xwork2.inject.ContainerBuilder$5.create(ContainerBuilder.java:207)
    at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:51)
    - locked <0xa18cf408> (a com.opensymphony.xwork2.inject.ContainerImpl)
    at com.opensymphony.xwork2.inject.ContainerBuilder$3.create(ContainerBuilder.java:93)
    at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:487)
    at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:484)
    at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:574)
    at com.opensymphony.xwork2.inject.ContainerBuilder.create(ContainerBuilder.java:484)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.createBootstrapContainer(DefaultConfiguration.java:252)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:193)
    - locked <0xa37c05b0> (a com.opensymphony.xwork2.config.impl.DefaultConfiguration)
....
....
..
"VM Thread" prio=10 tid=0xb766d800 nid=0x36e8 runnable 

"VM Periodic Task Thread" prio=10 tid=0xb7688400 nid=0x36ee waiting on condition 

JNI global references: 911

Heap
 def new generation   total 39424K, used 5740K [0xa1580000, 0xa4040000, 0xa6ad0000)
  eden space 35072K,  12% used [0xa1580000, 0xa19a8e88, 0xa37c0000)
  from space 4352K,  34% used [0xa37c0000, 0xa3932570, 0xa3c00000)
  to   space 4352K,   0% used [0xa3c00000, 0xa3c00000, 0xa4040000)
 tenured generation   total 87424K, used 1432K [0xa6ad0000, 0xac030000, 0xb1580000)
   the space 87424K,   1% used [0xa6ad0000, 0xa6c36038, 0xa6c36200, 0xac030000)
 compacting perm gen  total 12288K, used 11825K [0xb1580000, 0xb2180000, 0xb5580000)
   the space 12288K,  96% used [0xb1580000, 0xb210c588, 0xb210c600, 0xb2180000)
No shared spaces configured.

我觉得很奇怪,有谁能解释一下这种行为。

我建议您尝试更新您的操作系统和JVM


我认为这次崩溃是由于您的实际配置中有一个bug造成的。

我带了一台专用服务器。副总裁有问题。JVM和VPS线程可能不兼容。我不这么认为。我认为jvm和vps之间没有任何兼容性问题。vps是一个虚拟机,每个虚拟化提供商都会在其虚拟化解决方案与c/c++应用程序和jvm兼容时验证其虚拟化解决方案。当然,有些事情我不知道。现在最重要的一点是,您正在享受java应用程序的乐趣。我认为问题在于VPS没有提供专用内存,并且正在按需增加内存,但当它能够这样做时,JVM检测到内存不足并崩溃,正如您在日志中看到的那样。
[root@xxxxxx ~]# java
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
[root@xxxxxx ~]# free
             total       used       free     shared    buffers     cached
Mem:       1155072     561320     593752          0          0     317124
-/+ buffers/cache:     244196     910876
Swap:            0          0          0