JVM难学?那是由于你没当真看完这篇文章
单线程下无论栈帧太大照旧栈容量太小,及引用深度高出假造机应承深度城市抛出StackOverflowError每个要领压入栈的帧巨细是纷歧致的。多线程下当每个线程分派栈帧太大内存不可以或许扩展时抛出OutOfMemoryError非常线程栈帧越大,可建设的线程越少。 3.要领区参数 -XX:PermSize要领区内存最小值 -XX:MaxPermSize 要领区内存最大值 各个线程共享的内存地区,首要用来存储类的元数据、常量、静态变量、即时编译器编译后的代码等数据 例:-XX:PermSize=20M -XX:MaxPermSize=20M 非常范例 OutOfMemoryError : 缘故起因:常量过多,或署理反射等行使频仍 4.本机直接内存参数 -XX:MaxDirectMemorySize 例:-XX:MaxDirectMemorySize=10M 不敷时抛出OutOfMemory非常 四:垃圾网络算法 经典的垃圾接纳算法以下几种 一、标志--破除算法(Mark-Sweep) 接纳前状态: 接纳后状态: 优弱点: 算法执行分为两个阶段标志与破除,全部的接纳算法,根基都 基于标志接纳算法做了深度优化 弱点:服从题目,内存空间碎片(不持续的空间) 二、复制算法(Copying) 接纳前状态: Eden内存空间 8 Survivor1空间(From空间)1 Survivor2空间(To空间) 1 Eden内存空间与Survivor空间 8:1 接纳后状态: Survivor1空间(From空间)1 Eden内存空间与Survivor空间 8:1 优弱点: 较量标志破除算法,停止了接纳造成的内存碎片题目, 弱点:以局部的内存空间捐躯为价钱,不外空间的挥霍较量小,默认8:1的比例1是挥霍的。 复制也有必然的服从与空间本钱 三、标志清算算法(Mark-Compact) 接纳前状态: 接纳后状态: 优弱点: 停止了,空间的挥霍,与内存碎片题目。 弱点:清算时复制有服从本钱。 五:垃圾网络器 一、七种垃圾网络器 (1) Serial(串行GC)-XX:+UseSerialGC (2) ParNew(并行GC)-XX:+UseParNewGC (3) Parallel Scavenge(并行接纳GC) (4) Serial Old(MSC)(串行GC)-XX:+UseSerialGC (5) CMS(并发GC)-XX:+UseConcMarkSweepGC (6) Parallel Old(并行GC)-XX:+UseParallelOldGC (7) G1(JDK1.7update14才可以正式商用) 二.1~3用于年青代垃圾接纳:年青代的垃圾接纳称为minor GC 三.4~6用于大哥代垃圾接纳(虽然也可以用于要领区的接纳):大哥代的垃圾接纳称为full GC G1独立完成"分代垃圾接纳" 留意:并行与并发 并行:多条垃圾接纳线程同时操纵 并发:垃圾接纳线程与用户线程一路操纵 四、常用五种组合 Serial/Serial Old ParNew/Serial Old:与上边对比,只是近年青代多了多线程垃圾接纳罢了 ParNew/CMS:当下较量高效的组合 Parallel Scavenge/Parallel Old:自动打点的组合 G1:最先辈的网络器,可是必要JDK1.7update14以上 五. Serial/Serial Old 年青代Serial网络器回收单个GC线程实现"复制"算法(包罗扫描、复制) 大哥代Serial Old网络器回收单个GC线程实现"标志-清算"算法 Serial与Serial Old城市停息全部用户线程(即STW) 声名: STW(stop the world):编译代码时为每一个要领注入safepoint(要领中轮回竣事的点、要领执行竣事的点),在停息应用时,必要守候全部的用户线程进入safepoint,之后停息全部线程,然后举办垃圾接纳。 合用场所: CPU核数<2,物理内存<2G的呆板(简朴来讲,单CPU,新生代空间较小且对STW时刻要求不高的环境下行使) -XX:UseSerialGC:逼迫行使该GC组合 -XX:PrintGCApplicationStoppedTime:查察STW时刻 六.ParNew/Serial Old: (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |