jvm内存模型和gc算法

jvm内存模型和gc算法

ID:37187308

大小:225.48 KB

页数:3页

时间:2019-05-21

jvm内存模型和gc算法_第1页
jvm内存模型和gc算法_第2页
jvm内存模型和gc算法_第3页
资源描述:

《jvm内存模型和gc算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、南湖边上的小木屋如果平凡,则廉价不可避免JVM内存模型和GC算法分类:技术研究2012-04-2615:021161人阅读评论(0)收藏举报jvm算法cms多线程jni虚拟机Writenby蒋彪20120426本文参考了周志明的《understandingtheJVM》部分内容1.JVM内存模型1.1Java的内存基于当前操作系统的内核线程,32位操作系统的JVM最大内存就是进程最大内存,2G.64位操作系统的JVM内存当然可以更大,但是更大的内存会导致fullGC时间太长,停顿时间太长。所以工业化应用的时候,一般都是用32bit搭建JVM

2、集群。1.2JVM的内存和程序员密切相关的有・堆JVM中所有对象的内存空间1堆分成youngGen,OldGen其中youngGen分成Edy,两个survivorEden和survivor的比例默认是8:1由–XX:SurvivorRa)o来配置堆的大小由–Xms–Xmx来决定整个youngGen的大小有–Xmn来决定・线程stack每个线程独有的操作数栈局部变量表方法入口线程stack的大小由-Xss来决定・方法区(永久代)PermantSpace中储存的被classloader进来的类结构方法区的大小由-XX:PermSize和–XX

3、:MaxPermSize来决定・本地直接内存用JNI调用低级语言自行开辟内存的时候就会产生本地内存。本地内存不处于JVM的内存范围之类,属于操作系统级别管理。可以用–XX:MaxDirectMemorySize来指定2.JVM中的GC算法2.1如何判断对象无引用所有无引用的对象会被GC。判断对象是否无引用用根搜索算法,看该对象到GCRoot(比如线程stack中的对象引用)是否是可达的。如果发现不可达,就做第一次标记,放入一个低优先级的守护线程中,接下来做第二次标记,挨个调用这些对象的finalize,之后如果再次无法可达GCRoot下面就准

4、备回收。22.2GC垃圾收集器a.Serial收集器单GC线程,有停顿时间。简单说起来就是暂停所有客户线程动作。然后由GC线程垃圾垃圾收集。在youngGen用复制算法进行收集。简单说起来就是将Edy和Survivor1的存活对象收集到Survivor2中去。在OldGen用标记-整理算法进行收集。把存活对象移动到一端这是最老最传统的GC收集器,现在client模式的JVM还是使用该收集器b.ParallelNew新生代收集器就是个多线程版本的Serial收集器。但是着眼点在youngGen,和老年代的CMS收集器配合,运行在server端

5、JVMc.CMS老年代收集器CMS是一种以最短停顿时间为目标的收集器,使用CMS并不能达到GC效率最高(总体GC时间最小),但它能尽可能降低GC时服务的停顿时间,这一点对于实时或者高交互性应用(譬如证券交易)来说至关重要,这类应用对于长时间STW一般是不可容忍的。CMS收集器使用的是标记-清除算法,也就是说它在运行期间会产生空间碎片,所以虚拟机提供了参数开启CMS收集结束后再进行一次内存压缩。3

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。