前些天线上除出了个OOM问题,今天闲下来记录下:spa
OOM的提示信息是-PermGen space,说明问题出在方法区,方法区存的是什么东西?:类的加载信息、常量、静态变量。代理
按照方法区的定义:类加载的多了?常量、静态变量定义的多了? 变量
咱们项目中使用了Dubbo,你们知道由于Dubbo是经过动态代理的技术去动态生成调用类,与服务端通讯的,动态生成的类多了,方法区内类的加载信息也就多了,因此就OOM了。jdk
查看线上PermSize大小,用的默认的大小,大概80多M,增长配置:-xx:PermSize:256M -xxMaxPermSize:512M 后问题解决。配置
注: 咱们项目用的jdk1.7,在jdk1.8后HotSpot没有PermSize这个参数了,改用MetaspaceSize来配置方法区元数据大小方法