专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-963-0016      微信咨询  |  联系我们

可用内存的情况下显示内存溢出_java

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 20:24:51       共计:3594 浏览

可用内存的情况下显示内存溢出?

JVM中的内存和计算机的内存不是一回事,JVM(JAVA虚拟机)只是运行在服务器中的一个进程,只占用一部分的内存,其中堆通常占了整个jvm内存的80%!

假设一下,计算机是8G内存只给jvm分配了4G内存,jvm占用了4G内存之后,虽然整个内存才使用50%(忽略其他的),jvm也将发生内存溢出!

jvm内存溢出有哪些可能情况呢?

①,堆溢出:堆用来存储实例对象!

可能原因一:设置的最大堆内存太小!解决方案:通过设置-Xmx调大最大堆内存!

可能原因二:循环创建对象导致对象来不及回收!解决方案:优化代码!

②,栈溢出:栈主要用来存放对象引用!

可能原因:递归调用方法等容易出现栈溢出!

解决方法:优化代码!

③,方法区溢出:通常是因为加载了大量的Class,jar等!

通常不会溢出,使用-XX:Permsize设置合适的永久代!

发现内存溢出之后,可使用jstamp,MAT JAVA等进行内存分析

一直在持续分享JAVA方面的技术,有需要的朋友敬请关注。。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:Unix系统中如何设置环境变量_java | ·下一条:如何选择一家能够高薪就业的java培训机构_java

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有