时间:2010-07-26 12:51:21

标签: java jvm classloader jvm-arguments

3 个答案:

答案 0 :(得分:214)

答案 1 :(得分:35)

答案 2 :(得分:24)

这很有用的例子:

在我们的Weblogic 10.3 JVM上设置-XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled有助于解决JAX-WS实现为每个Web服务调用创建新代理类的问题,最终导致内存不足错误。

追踪并非易事。以下代码始终返回port

的相同代理类
final MyPortType port = 
Service.create(
        getClass().getResource("/path/to.wsdl"), 
        new QName("http://www.example.com", "MyService"))
    .getPort(
        new QName("http://www.example.com", "MyPortType"), 
        MyPortType.class);

在内部,此代理委托给weblogic.wsee.jaxws.spi.ClientInstance的实例,该实例再次委派给新的$Proxy[nnnn]类,其中n在每次调用时都会递增。添加标志时,n仍然会增加,但至少从内存中删除了这些临时类。

更一般地说,当通过java.lang.reflect.Proxy

大量使用Java反射和代理时,这非常有用。