6.堆和GC】的更多相关文章

一. 堆和GC介绍 1.java堆的特点 <深入理解java虚拟机>是怎么描述java堆的 Java堆(Java Heap)是java虚拟机所管理的内存中最大的一块 java堆被所有线程共享的一块内存区域 虚拟机启动时创建java堆 java堆的唯一目的就是存放对象实例. java堆是垃圾收集器管理的主要区域. 从内存回收的角度来看, 由于现在收集器基本都采用分代收集算法, 所以Java堆可以细分为:新生代(Young)和老年代(Old). 新生代又被划分为三个区域Eden.From Surv…
减少大对象堆的碎片 如果不能完全避免大对象堆的分配,则要尽量避免碎片化. 对于LOH不小心就会有无限增长,但LOH使用的空闲列表机制可以减轻增长的影响.利用这个空闲列表,我们可以在两块分配区域中间找到你所想要的可分配区域. 要做到这一点,就需要保证你在LOH里的分配都按照同一个尺寸或者同一个尺寸的倍数进行.例如,一个常见的需求是在LOH里分配缓冲区.要确保分配的每个缓冲区都是一个大小,或者是一个知名数字(1M)的倍数,而不要创建大小不一的缓冲区.这样做的话,如果一个缓冲区被回收,那么下一个缓冲区…
在<初步了解JVM第一篇>和<初步了解JVM第二篇>中,分别介绍了: 类加载器:负责加载*.class文件,将字节码内容加载到内存中.其中类加载器的类型有如下:执行引擎:负责解释命令,提交给操作系统执行. 启动类加载器(Bootstrap) 扩展类加载器(Extension) 应用程序类加载器(AppClassLoader) 用户自定义加载器(User-Defined) 执行引擎:负责解释命令,提交给操作系统执行. 本地接口:目的是为了融合不同的编程语言提供给Java所用,但是企业…
JVM初探-使用堆外内存减少Full GC 标签 : JVM 问题: 大部分主流互联网企业线上Server JVM选用了CMS收集器(如Taobao.LinkedIn.Vdian), 虽然CMS可与用户线程并发GC以降低STW时间, 但它也并非十分完美, 尤其是当出现Concurrent Mode Failure由并行GC转入串行时, 将导致非常长时间的Stop The World(详细可参考JVM初探- 内存分配.GC原理与垃圾收集器). 解决: 由GCIH可以联想到: 将长期存活的对象(如L…
堆内存使用分析,GC 日志解读 重要的东东 在Java中,对象实例都是在堆上创建.一些类信息,常量,静态变量等存储在方法区.堆和方法区都是线程共享的. GC机制是由JVM提供,用来清理需要清除的对象,回收堆内存. GC机制将Java程序员从内存管理中解放了出来,可以更关注于业务逻辑. 在Java中,GC是由一个被称为垃圾回收器的守护线程执行的. 在从内存回收一个对象之前会调用对象的finalize()方法. 作为一个Java开发者不能强制JVM执行GC:GC的触发由JVM依据堆内存的大小来决定.…
eclipse启动优化,终于不那么卡了! 网上找了好多都是myEclipse的优化的,跟eclipse有点区别,找了很多方法还是不能让这个eclipse(Version: Kepler Release)快起来,太费事了,终于给俺找到一个挺好用的方法,转来的. 首先了解下JVM中几个相关的概念:Xms:最小堆大小Xmx:最大堆大小Xmn:年轻代堆大小Xss:每个线程的堆大小PermSize:初始持久代大小MaxPermSize:最大持久代大小一般Xms.Xmx设置相同,PermSize.MaxPe…
从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C语言的同学都知道,在C语言中内存的开辟和释放都是由我们自己来管理的,每一个new操作都要对于一个delete操作,否则就会参数内存泄漏和溢出的问题,导致非常槽糕的后果.但在Java开发过程中,则完全不需要担心这个问题.因为jvm提供了自动内存管理的机制.内存管理的工作由jvm帮我们完成.这样我们就不…
GC日志分析 程序代码: public class JvmTest { public static void main(String[] args) { int m = 1024 * 1024; byte[] b = new byte[2 * m]; System.out.println("allocate 2M"); byte[] b1 = new byte[2 * m]; System.out.println("allocate 2M"); byte[] b2…
引言 何为终极算法? 其实就是现在的JVM采用的算法,并非真正的终极.说不定若干年以后,还会有新的终极算法,而且几乎是一定会有,因为LZ相信高人们的能力. 那么分代搜集算法是怎么处理GC的呢? 对象分类 上一章已经说过,分代搜集算法是针对对象的不同特性,而使用适合的算法,这里面并没有实际上的新算法产生.与其说分代搜集算法是第四个算法,不如说它是对前三个算法的实际应用. 首先我们来探讨一下对象的不同特性,接下来LZ和各位来一起给这些对象选择GC算法. 内存中的对象按照生命周期的长短大致可以分为三种…
http://my.oschina.net/lichaoqiang/blog/291906 当我们对.NET Framework的一些基本面了解之后,实际上,还是很有必要了解一些更底层的知识.比如.NET Framework是如何进行内存管理的,是如何垃圾回收的......这样,我们才能写出更高性能的程序. 在.NET Framework中,有2个地方帮我们保存管理数据:一个是"堆",也叫"托管堆",由.NET Framework的垃圾收集器(Garbage Col…