设为首页 收藏本站
查看: 778|回复: 0

[经验分享] JVM内存管理

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-22 08:54:16 | 显示全部楼层 |阅读模式
一、JVM内存划分
方法区(持久代):存放要加载的类信息、类中静态变量、final常量、方法信息等;class对象的getname,isInterface等数据都来源于方法区。sun jdk中对应permanet generation
堆:默认物理内存的1/64。
本地方法栈:用于支持native方法的执行,存储了每个native方法调用的状态,sun jdk实现的中本地方法栈和jvm方法栈是同一个。
pc寄存器和jvm方法栈:每个线程会创建pc寄存器和jvm方法栈,pc寄存器可能占用cpu寄存器或操作系统内存,jvm方法栈占用操作系统内存。当jvm方法栈空间不足,会抛出stackoverflowerror,可通过-Xss配置。
二、内存分配
堆线程共享,因此堆分配内存空间时需要枷锁。

sun jdk为提升内存分配效率,为每个新建线程在eden space单独分配空间(thread local allocation buffer tlab),大小由jvm根据运行情况计算得到,可通过-XX:TLABWasteTargetPercent设置每个线程占eden space的百分比。
三、内存回收
通常采用收集器方式实现GC:
引用计数收集器:当计数器为零,说明对象已不再被使用,可回收。对循环调用不适合。
跟踪收集器:全局记录数据引用状态,基于一定条件触发(定时、空见不足),执行是从根集合扫描对象引用关系。
算法有:
复制:从根集合扫描存活对象,将其复制到新的未使用的空间中取。
标记-清除:从根集合扫描存活对象,对其进行标记。完毕后,扫描整个空间中未标记对象,进行回收。因直接回收不引用对象,会造成内存碎片。
标记-压缩:在标记-清除的基础上,将存活对象往左端空闲空间移动,并更新引用其对象的指针。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-41275-1-1.html 上篇帖子: tomcat的基本配置示例 下篇帖子: JDK和Tomcat安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表