栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

即使堆等大小稳定,为什么Sun JVM仍继续消耗更多的RSS内存?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

即使堆等大小稳定,为什么Sun JVM仍继续消耗更多的RSS内存?

只是一个想法:NIO缓冲区位于JVM外部。

编辑: 根据2016年,值得考虑@Lari Hotari评论即使堆等大小稳定时,为什么Sun
JVM仍继续消耗更多的RSS内存?,因为回到2009年,RHEL4的glibc <2.10(〜2.3)

为什么会这样呢?“幕后”发生了什么?

JVM使用的内存不仅仅是堆。例如,Java方法,线程堆栈和本机句柄与堆以及JVM内部数据结构分开分配在内存中。

在您的情况下,可能的麻烦原因可能是:NIO(已经提到),JNI(已经提到),过多的线程创建。

关于JNI,您曾写道该应用程序未使用JNI,但是…您正在使用哪种类型的JDBC驱动程序?可能是2型泄漏吗?但是,正如您所说的那样,数据库使用率很低是非常不可能的。

关于过多的线程创建,每个线程都有自己的堆栈,该堆栈可能很大。堆栈大小实际上取决于VM,OS和体系结构,例如对于JRockit,Linux x64上的堆栈大小为256K,我在Sun文档中没有找到有关Sun VM的参考。这直接影响线程内存(线程内存=线程堆栈大小*线程数)。而且,如果您创建和销毁大量线程,则内存可能不会被重用。

如何控制JVM的实际内存消耗?

老实说,对我而言,成百上千的线程似乎是巨大的。也就是说,如果您确实需要那么多线程,则可以通过该-Xss选项配置线程堆栈大小。这样可以减少内存消耗。但是我认为这不会解决整个问题。我倾向于认为当我查看实际内存图时,某处会有泄漏。

问候。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569780.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号