如何在java虚拟机中使用jvm方法-创新互联
这篇文章主要介绍了如何在java虚拟机中使用jvm方法,创新互联网站建设公司,小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随创新互联网站建设公司,小编来看看吧!
创新互联长期为成百上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为黄埔企业提供专业的做网站、成都网站设计,黄埔网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。使用下面代码:
for (int i = 0; i <10000; i++) { CglibWapper c=new CglibWapper("cn.springok.perm"+i) }
代码解释:会根据传入的参数动态生成一个类以及类的实例。因为对象实例化,类的字段、方法、常量池保存在方法区,因此操作会占用一定内存的。
大量的类可能导致方法区溢出,使用下面的参数运行代码:
-XX:PermSize=10M -XX:MaxPermSize=10M -XX:PrintGCDetails
参数说明:
-XX:PermSize=10M 初始永久区大小10M
-XX:MaxPermSize 方法区较大内存10M。
-XX:PrintGCDetails 打印日志详情。
执行程序部分输出如下:
compacting perm gen total 86272K, used 86136K [0x44600000, 0x49a40000, 0x64600000)
the space 86272K, 99% used [0x44600000, 0x49a1e2f8, 0x49a1e400, 0x49a40000)
系统内存溢出了,扩大-XX:MaxPermSize值,可以生成更多的类。
可以使用工具Visual VM观察方法区的具体使用情况。
需要注意一点:
jdk8中永久区被移除了,取而代之的是元数据区,可能方法区依赖jvm的内存吧。元数据区可以使用-XX:MaxMetaspaceSize制定,跟之前版本的-XX:MaxPermSize一样,分配的值越多,就可以支持更多的类。不同的是元数据区是堆外直接内存,与方法永久区不同,在不指定大小的情况下,虚拟机会耗尽所有可用的系统内存。
元数据区发生溢出,虚拟机一样抛出异常,如下:
java.lang.OutOfMemoryError Metaspace
以上就是创新互联网站建设公司,小编为大家收集整理的如何在java虚拟机中使用jvm方法,如何觉得创新互联建站的内容还不错,欢迎将创新互联建站推荐给身边好友。
分享名称:如何在java虚拟机中使用jvm方法-创新互联
文章起源:http://myzitong.com/article/ceopjd.html