码迷,mamicode.com
首页 > 编程语言 > 详细

Java虚拟机八 分析Java堆

时间:2018-10-11 14:25:28      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:大于   xmx   并且   代码   就会   visual   常见   优化   就是   

常见的内存溢出的原因及其解决思路

     1.堆溢出:

         由于大量的对象都直接分配在堆上,因此它最有可能发生溢出。因为大量对象占据了堆空间,而这些对象都持有强引用,导致无法回收,当对象大小之和大于堆空间时就会发生溢出。

         为了解决堆溢出错误,一方面可以使用-Xmx参数指定一个更大的堆空间,另一方面,由于堆空间不可能无限增长,通过MAT或者Visual VM等工具,分析找到大量占用堆空间的对象,并在应用程序上作出合理的优化也是十分必要的。

     2.直接内存溢出

         在Java的NIO(New IO)中,直接内存的使用,也就是通过Java代码,获得一块堆外的内存空间,这块空间是直接向操作系统申请的。直接内存的申请速度一般要比堆内存慢,但是其访问速度要快于堆内存。因此对于那些可复用的,并且会被经常访问的空间,使用直接内存可以提高系统性能。但是由于直接内存没有被Java虚拟机完全托管,若使用不当,也会发生内存溢出而宕机。

         

Java虚拟机八 分析Java堆

标签:大于   xmx   并且   代码   就会   visual   常见   优化   就是   

原文地址:https://www.cnblogs.com/taiguyiba/p/9771993.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!