Advertisement

在java8中使用metaspace会有没有oom的情况?

阅读量:

前言:随着Java8版本的发布,Metaspace的引入使得我们不再频繁遭遇java.lang.OutOfMemoryError: PermGen这类错误。然而,需要明确的是,这一新特性并不能彻底解决由类加载机制引发的内存泄漏问题。

(一)Metaspace的基本概述
(1)内存结构:当前大部分与类相关的元数据信息被分配在本地内存中,原先用于描述类元数据的“klasses”结构已被取消。
(2) 存储范围:在默认配置下,其容量仅受限于本地内存资源,但用户也可以对其进行手动设定。

(二)接下来分析Metaspace是否仍可能发生OOM问题
我们可以通过动态代理技术生成大量代理类的信息,从而填充元数据区域。相关实现代码如下

复制代码
    public interface MetaspaceFacade {
    void method(String input);
    }
    
      
      
      
    
复制代码
    public class MetaspaceFacadeImpl implements MetaspaceFacade {
    
    public void method(String name) {
    }
    }
    
      
      
      
      

全部评论 (0)

还没有任何评论哟~