小编Lok*_*han的帖子

超出OutOfMemory GC开销限制以获取对log4j对象的锁定

任何人都可以帮我确定确切的问题.它是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 …

java log4j jdk1.6

7
推荐指数
2
解决办法
6864
查看次数

SAML SSO客户端,测试模拟器SAML Provider/Server

SAML,SSO是我项目中的一个新学习.我没有足够的时间来试验找到正确的工具/ API.请求你帮忙.

我需要实现SAML Client(在Java上),它必须能够发送SAML断言并从SAML提供者/服务器接收SAML响应.我应该使用哪种Java API在Java中编写SAML客户端?

我们的客户已经拥有SAML响应者/服务器,它接收SAML请求并发送带有用户配置文件和其他信息的SAML响应.但我们需要编写测试模拟器SAML响应器/服务器.我使用过Apache和Tomcat服务器.我应该使用哪些服务器/ API来实现此测试模拟器SAML响应器/服务器?

java saml single-sign-on

2
推荐指数
1
解决办法
8616
查看次数

标签 统计

java ×2

jdk1.6 ×1

log4j ×1

saml ×1

single-sign-on ×1