您的位置:首页 > 其它

JVM调优及内部机制研究

2016-09-10 21:03 162 查看
使用了这么久的java,今天突然一时冲动,想自己写篇关于jvm的内部机制。根据我个人的理解,jvm主要采用堆和栈来进行运作的,我只是简单的解释了下,其实jvm运作很复杂,那我们进行jvm调优,从哪些地方进行呢?首先可以调节正确的堆大小,何为堆,堆是装载类(例如string,long,int,float等等)的容器,这个容器配置好了,jvm的堆也就调合适了。

所有new的对象都是在堆中生成,对象又分为新生代,年老代,永久代,一般new的对象都是新生代,堆的大小可以用-xms和-xmx来控制。那么新生代的内存可以通过-xmn来控制。年老代是长时间存在于堆中的对象。永久代即存在方法区是生成的方法或类。栈是jvm必不可少的工具,每个线程请求方法都会在栈中申请一个栈帧,每个栈帧都包含局部变量和操作数栈,用于存储此次调用的参数,临时变量和中间结果。还有本地方法栈,这个不太了解。最后就是用持久代来实现的方法区,该区域用于存储final变量,static变量,类和属性等信息。说到jvm不得不说jvm的垃圾回收机制GC,它的其中一个回收算法标记-清除,遍历整个堆,标记已引用的对象,回收未引用的对象。不足之处是此方法需要暂停整个应用,还会留下回收碎片。还有复制算法,此算法的缺点是使用的内存较大,标记-整理是前两个方法的结合,即避免了内存消耗过大又避免了内存碎片的问题。里面的讲解很详细--》点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: