任何人都可以帮我确定确切的问题.它是JVM,Log4j还是我们应用程序中的其他东西?
我们在Solaris 10(SUNW,Sun-Fire-V240)服务器上使用JDK 1.6.0.24运行多线程应用程序.哪个有RMI调用来与客户端通信.
我们的应用程序被绞死.我在threaddump中看到了下面的OutOfMemory.但是,我知道这是因为GC只能占据对象内存的2%.
# java.lang.OutOfMemoryError: GC overhead limit exceeded
Heap
PSYoungGen total 304704K, used 154560K [0xe0400000, 0xfbc00000, 0xfbc00000)
eden space 154560K, 100% used [0xe0400000,0xe9af0000,0xe9af0000)
from space 150144K, 0% used [0xf2960000,0xf2960000,0xfbc00000)
to space 145856K, 0% used [0xe9af0000,0xe9af0000,0xf2960000)
PSOldGen total 897024K, used 897023K [0xa9800000, 0xe0400000, 0xe0400000)
object space 897024K, 99% used [0xa9800000,0xe03ffff0,0xe0400000)
PSPermGen total 28672K, used 27225K [0xa3c00000, 0xa5800000, 0xa9800000)
object space 28672K, 94% used [0xa3c00000,0xa5696580,0xa5800000)
在我的情况下,它应该是因为GC不能从许多等待线程中声明内存.如果我看到线程转储.大多数线程都在等待获取org.apache.log4j.Logger上的锁.使用log4j-1.2.15
如果您在下面看到第一个线程的跟踪.它获取2个对象的锁定,其他线程(~50)正在等待获取锁定.几乎相同的痕迹可以看到20分钟.
这是线程转储:
pool-3-thread-51" prio=3 tid=0x00a38000 nid=0xa4 runnable [0xa0d5f000]
java.lang.Thread.State: RUNNABLE
at java.text.DateFormat.format(DateFormat.java:316)
at … SAML,SSO是我项目中的一个新学习.我没有足够的时间来试验找到正确的工具/ API.请求你帮忙.
我需要实现SAML Client(在Java上),它必须能够发送SAML断言并从SAML提供者/服务器接收SAML响应.我应该使用哪种Java API在Java中编写SAML客户端?
我们的客户已经拥有SAML响应者/服务器,它接收SAML请求并发送带有用户配置文件和其他信息的SAML响应.但我们需要编写测试模拟器SAML响应器/服务器.我使用过Apache和Tomcat服务器.我应该使用哪些服务器/ API来实现此测试模拟器SAML响应器/服务器?