当前位置: 首页 > news >正文

建设网站的服务费是指什么意思it入门应该学什么

建设网站的服务费是指什么意思,it入门应该学什么,家装公司名称大全,皮具制品 东莞网站建设Java与C等语言最大的技术区别#xff1a;自动化的垃圾回收机制#xff08;GC#xff09; 为什么要了解GC和内存分配策略 1、面试需要 2、GC对应用的性能是有影响的#xff1b; 3、写代码有好处 栈#xff1a;栈中的生命周期是跟随线程#xff0c;所以一般不需要关注 堆等语言最大的技术区别自动化的垃圾回收机制GC 为什么要了解GC和内存分配策略 1、面试需要 2、GC对应用的性能是有影响的 3、写代码有好处 栈栈中的生命周期是跟随线程所以一般不需要关注 堆堆中的对象是垃圾回收的重点 方法区/元空间这一块也会发生垃圾回收不过这块的效率比较低一般不是我们关注的重点 判断对象的存活 引用计数法 给对象添加一个引用计数器当对象增加一个引用时计数器加 1引用失效时计数器减 1。引用计数为 0 的对象可被回收。Python在用但主流虚拟机没有使用 优点快方便实现简单。 缺陷对象相互引用时A.instanceB同时B.instanceA很难判断对象是否该回收。 可达性分析Java中使用 面试时重要的知识点牢记 来判定对象是否存活的。这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点从这些节点开始向下搜索搜索所走过的路径称为引用链Reference Chain当一个对象到GC Roots没有任何引用链相连时则证明此对象是不可用的。 作为GC Roots的对象包括下面几种 当前虚拟机栈中局部变量表中的引用的对象 当前本地方法栈中局部变量表中的引用的对象 方法区中类静态属性引用的对象 方法区中的常量引用的对象 请忘记 finalize finalize可以完成对象的拯救但是JVM不保证一定能执行所以请忘记这个“坑”。 各种引用Reference 传统定义Reference中存储的数据代表的是另一块内存的起始地址。 强引用 一般的Object obj new Object() 就属于强引用。 如果有GCroots的强引用垃圾回收器绝对不会回收它当内存不足时宁愿抛出 OOM 错误使得程序异常停止 软引用 SoftReference 垃圾回收器在内存充足的时候不会回收它而在内存不足时会回收它 软引用非常适合于创建缓存。当系统内存不足的时候缓存中的内容是可以被释放的。 一些有用但是并非必需用软引用关联的对象系统将要发生OOM之前这些对象就会被回收。参见代码 VM参数 -Xms10m  -Xmx10m -XX:PrintGC   运行结果   例如一个程序用来处理用户提供的图片。如果将所有图片读入内存这样虽然可以很快的打开图片但内存空间使用巨大一些使用较少的图片浪费内存空间需要手动从内存中移除。如果每次打开图片都从磁盘文件中读取到内存再显示出来虽然内存占用较少但一些经常使用的图片每次打开都要访问磁盘代价巨大。这个时候就可以用软引用构建缓存。 弱引用 WeakReference 垃圾回收器在扫描到该对象时无论内存充足与否都会回收该对象的内存。 一些有用程度比软引用更低但是并非必需用弱引用关联的对象只能生存到下一次垃圾回收之前GC发生时不管内存够不够都会被回收。 参看代码     注意软引用 SoftReference和弱引用 WeakReference可以用在内存资源紧张的情况下以及创建不是很重要的数据缓存。当系统内存不足的时候缓存中的内容是可以被释放的。 实际运用WeakHashMap、ThreadLocal 虚引用 PhantomReference 幽灵引用最弱被垃圾回收的时候收到一个通知 如果一个对象只具有虚引用那么它和没有任何引用一样任何时候都可能被回收。 虚引用主要用来跟踪对象被垃圾回收器回收的活动 GCGarbage Collection 案例Oom类 -Xms  堆区内存初始内存分配的大小 -Xmx  堆区内存可被分配的最大上限 -XX:PrintGCDetails 打印GC详情 -XX:HeapDumpOnOutOfMemoryError 当堆内存空间溢出时输出堆的内存快照 新生代大小配置参数的优先级 中间 -Xmn  限定大小   -XX:SurvivorRatio 2个Survivor区和Eden区的比值 8 表示 两个Survivor Eden 2 8 每个Survivor占 1/10 可以修改为2 8 表示 两个Survivor Eden 2 2  各占一半 GC overhead limit exceeded 超过98%的时间用来做GC并且回收了不到2%的堆内存时会抛出此异常 1.垃圾回收会占据资源 2.回收效率过低也会有限制 为什么new出的对象不会被回收了我们来看看GC是如何判断对象的存活     Minor GC 特点: 发生在新生代上发生的较频繁执行速度较快 触发条件: Eden区空间不足\空间分配担保 Full GC 特点:主要发生在老年代上新生代也会回收较少发生执行速度较慢 触发条件: 调用 System.gc() 老年代区域空间不足 空间分配担保失败 JDK 1.7 及以前的永久代(方法区)空间不足 CMS GC处理浮动垃圾时如果新生代空间不足则采用空间分配担保机制如果老年代空间不足则触发Full GC 垃圾回收算法 复制算法Copying 将可用内存按容量划分为大小相等的两块每次只使用其中的一块。当这一块的内存用完了就将还存活着的对象复制到另外一块上面然后再把已使用过的内存空间一次清理掉。这样使得每次都是对整个半区进行内存回收内存分配时也就不用考虑内存碎片等复杂情况只要按顺序分配内存即可实现简单运行高效。只是这种算法的代价是将内存缩小为了原来的一半。 注意内存移动是必须实打实的移动复制不能使用指针玩。   专门研究表明新生代中的对象98%是“朝生夕死”的所以一般来说回收占据10%的空间够用了所以并不需要按照1:1的比例来划分内存空间而是将内存分为一块较大的Eden空间和两块较小的Survivor空间每次使用Eden和其中一块Survivor[1]。当回收时将Eden和Survivor中还存活着的对象一次性地复制到另外一块Survivor空间上最后清理掉Eden和刚才用过的Survivor空间。 HotSpot虚拟机默认Eden和Survivor的大小比例是8:1也就是每次新生代中可用内存空间为整个新生代容量的90%80%10%只有10%的内存会被“浪费”。 标记-清除算法Mark-Sweep 过程: 首先标记所有需要回收的对象统一回收被标记的对象缺点 1.效率问题标记和清除效率都不高 2.标记清除之后会产生大量不连续的内存碎片空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。 标记-整理算法Mark-Compact 首先标记出所有需要回收的对象在标记完成后后续步骤不是直接对可回收对象进行清理而是让所有存活的对象都向一端移动然后直接清理掉端边界以外的内存。 垃圾回收器 分代收集 根据各个年代的特点选取不同的垃圾收集算法 新生代使用复制算法 老年代使用标记-整理或者标记-清除算法 jps -v显示当前使用的垃圾回收器   在新生代中每次垃圾收集时都发现有大批对象死去只有少量存活那就选用复制算法只需要付出少量存活对象的复制成本就可以完成收集。 而老年代中因为对象存活率高、没有额外空间对它进行分配担保就必须使用“标记—清理”或者“标记—整理”算法来进行回收。 请记住下图的垃圾收集器和之间的连线关系。   并行垃圾收集的多线程的同时进行。 并发垃圾收集的多线程和应用的多线程同时进行。   注吞吐量运行用户代码时间/(运行用户代码时间 垃圾收集时间) 垃圾收集时间 垃圾回收频率 * 单次垃圾回收时间 各种垃圾回收器 Serial/Serial Old 最古老的单线程独占式成熟适合单CPU  服务器 -XX:UseSerialGC 新生代和老年代都用串行收集器 -XX:UseParNewGC 新生代使用ParNew老年代使用Serial Old -XX:UseParallelGC 新生代使用ParallerGC老年代使用Serial Old   ParNew 和Serial基本没区别唯一的区别多线程多CPU的停顿时间比Serial少 -XX:UseParNewGC 新生代使用ParNew老年代使用Serial Old 除了性能原因外主要是因为除了 Serial 收集器只有它能与 CMS 收集器配合工作。   Parallel ScavengeParallerGC/Parallel Old 关注吞吐量的垃圾收集器高吞吐量则可以高效率地利用CPU时间尽快完成程序的运算任务主要适合在后台运算而不需要太多交互的任务。 所谓吞吐量就是CPU用于运行用户代码的时间与CPU总消耗时间的比值即吞吐量运行用户代码时间/运行用户代码时间垃圾收集时间虚拟机总共运行了100分钟其中垃圾收集花掉1分钟那吞吐量就是99%。   Concurrent Mark Sweep CMS 收集器是一种以获取最短回收停顿时间为目标的收集器。目前很大一部分的Java应用集中在互联网站或者B/S系统的服务端上这类应用尤其重视服务的响应速度希望系统停顿时间最短以给用户带来较好的体验。CMS收集器就非常符合这类应用的需求。 -XX:UseConcMarkSweepGC 一般新生代使用ParNew老年代的用CMS 从名字包含“Mark Sweep”上就可以看出CMS收集器是基于“标记—清除”算法实现的它的运作过程相对于前面几种收集器来说更复杂一些 垃圾回收过程 整个过程分为4个步骤包括 l 初始标记仅仅只是标记一下 GC Roots 能直接关联到的对象速度很快需要停顿STW -Stop the world。 l 并发标记从GC Root 开始对堆中对象进行可达性分析找到存活对象它在整个回收过程中耗时最长不需要停顿。 l 重新标记为了修正并发标记期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录需要停顿(STW)。这个阶段的停顿时间一般会比初始标记阶段稍长一些但远比并发标记的时间短。 l 并发清除不需要停顿。   优点 由于整个过程中耗时最长的并发标记和并发清除过程收集器线程都可以与用户线程一起工作所以从总体上来说CMS收集器的内存回收过程是与用户线程一起并发执行的。 缺点 CPU资源敏感因为并发阶段多线程占据CPU资源如果CPU资源不足效率会明显降低。 浮动垃圾由于CMS并发清理阶段用户线程还在运行着伴随程序运行自然就还会有新的垃圾不断产生这一部分垃圾出现在标记过程之后CMS无法在当次收集中处理掉它们只好留待下一次GC时再清理掉。这一部分垃圾就称为“浮动垃圾”。 由于浮动垃圾的存在因此需要预留出一部分内存意味着 CMS 收集不能像其它收集器那样等待老年代快满的时候再回收。 在1.6的版本中老年代空间使用率阈值(92%) 如果预留的内存不够存放浮动垃圾就会出现 Concurrent Mode Failure这时虚拟机将临时启用 Serial Old 来替代 CMS。 会产生空间碎片标记 - 清除算法会导致产生不连续的空间碎片   G1垃圾回收器   G1中重要的参数 -XX:UseG1GC   使用G1垃圾回收器   内部布局改变 G1 把堆划分成多个大小相等的独立区域Region新生代和老年代不再物理隔离。 算法标记—整理 humongous 和复制回收算法(survivor)。   GC模式 Young GC 选定所有年轻代里的Region。通过控制年轻代的region个数即年轻代内存大小来控制young GC的时间开销。复制回收算法 Mixed GC 选定所有年轻代里的Region外加根据global concurrent marking统计得出收集收益高的若干老年代Region。在用户指定的开销目标范围内尽可能选择收益高的老年代Region。 Mixed GC不是full GC它只能回收部分老年代的Region。如果mixed GC实在无法跟上程序分配内存的速度导致老年代填满无法继续进行Mixed GC就会使用serial old GCfull GC来收集整个GC heap。所以我们可以知道G1是不提供full GC的。 全局并发标记global concurrent marking   初始标记仅仅只是标记一下GC Roots 能直接关联到的对象并且修改TAMSNest Top Mark Start的值让下一阶段用户程序并发运行时能在正确可以的Region中创建对象此阶段需要停顿线程(STW)但耗时很短。   并发标记从GC Root 开始对堆中对象进行可达性分析找到存活对象此阶段耗时较长但可与用户程序并发执行。   最终标记为了修正在并发标记期间因用户程序继续运作而导致标记产生变动的那一部分标记记录虚拟机将这段时间对象变化记录在线程的 Remembered Set Logs 里面最终标记阶段需要把 Remembered Set Logs 的数据合并到 Remembered Set 中。这阶段需要停顿线程(STW)但是可并行执行。   筛选回收首先对各个 Region 中的回收价值和成本进行排序根据用户所期望的 GC 停顿时间来制定回收计划。此阶段其实也可以做到与用户程序一起并发执行但是因为只回收一部分 Region时间是用户可控制的而且停顿用户线程将大幅度提高收集效率。     特点 空间整合不会产生内存碎片 算法标记—整理 humongous 和复制回收算法(survivor)。 可预测的停顿 G1收集器之所以能建立可预测的停顿时间模型是因为它可以有计划地避免在整个Java堆中进行全区域的垃圾收集。G1跟踪各个Region里面的垃圾堆积的价值大小回收所获得的空间大小以及回收所需时间的经验值在后台维护一个优先列表每次根据允许的收集时间优先回收价值最大的Region这也就是Garbage-First名称的来由。这种使用Region划分内存空间以及有优先级的区域回收方式保证了G1收集器在有限的时间内可以获取尽可能高的收集效率。 G1把内存“化整为零”的思路理解起来似 G1 GC主要的参数 参数 含义 -XX:G1HeapRegionSizen 设置Region大小并非最终值 -XX:MaxGCPauseMillis 设置G1收集过程目标时间默认值200ms不是硬性条件 -XX:G1NewSizePercent 新生代最小值默认值5% -XX:G1MaxNewSizePercent 新生代最大值默认值60% -XX:ParallelGCThreads STW期间并行GC线程数 -XX:ConcGCThreadsn 并发标记阶段并行执行的线程数 -XX:InitiatingHeapOccupancyPercent 设置触发标记周期的 Java 堆占用率阈值。默认值是45%。这里的java堆占比指的是non_young_capacity_bytes包括oldhumongous   垃圾回收器的重要参数使用-XX: 参数 描述 UseSerialGC 虚拟机运行在Client模式下的默认值打开此开关后使用 SerialSerial Old 的收集器组合进行内存回收 UseParNewGC 打开此开关后使用 ParNew Serial Old 的收集器组合进行内存回收 UseConcMarkSweepGC 打开此开关后使用 ParNew CMS Serial Old 的收集器组合进行内存回收。Serial Old 收集器将作为 CMS 收集器出现 Concurrent Mode Failure 失败后的后备收集器使用 UseParallelGC 虚拟机运行在 Server 模式下的默认值打开此开关后使用 Parallel Scavenge Serial Old(PS MarkSweep) 的收集器组合进行内存回收 UseParallelOldGC 打开此开关后使用 Parallel Scavenge Parallel Old 的收集器组合进行内存回收 SurvivorRatio 新生代中 Eden 区域与 Survivor 区域的容量比值默认为8代表 Eden : Survivor 8 : 1 PretenureSizeThreshold 直接晋升到老年代的对象大小设置这个参数后大于这个参数的对象将直接在老年代分配 MaxTenuringThreshold 晋升到老年代的对象年龄每个对象在坚持过一次 Minor GC 之后年龄就增加1当超过这个参数值时就进入老年代 UseAdaptiveSizePolicy 动态调整 Java 堆中各个区域的大小以及进入老年代的年龄 HandlePromotionFailure 是否允许分配担保失败即老年代的剩余空间不足以应付新生代的整个 Eden 和 Survivor 区的所有对象都存活的极端情况 ParallelGCThreads 设置并行GC时进行内存回收的线程数 GCTimeRatio GC 时间占总时间的比率默认值为99即允许 1% 的GC时间仅在使用 Parallel Scavenge 收集器生效 MaxGCPauseMillis 设置 GC 的最大停顿时间仅在使用 Parallel Scavenge 收集器时生效 CMSInitiatingOccupancyFraction 设置 CMS 收集器在老年代空间被使用多少后触发垃圾收集默认值为 68%仅在使用 CMS 收集器时生效 UseCMSCompactAtFullCollection 设置 CMS 收集器在完成垃圾收集后是否要进行一次内存碎片整理仅在使用 CMS 收集器时生效 CMSFullGCsBeforeCompaction 设置 CMS 收集器在进行若干次垃圾收集后再启动一次内存碎片整理仅在使用 CMS 收集器时生效   Stop The World现象 GC收集器和我们GC调优的目标就是尽可能的减少STW的时间和次数。转载于:https://www.cnblogs.com/Soy-technology/p/11020638.html
http://wiki.neutronadmin.com/news/209440/

相关文章:

  • 做网站要什么资料建设银行信用卡在网站激活后如何设置密码
  • 如何判断网站做的关键词天津企朋做网站的公司
  • 做数据的网站有哪些内容给wordpress插件添加po文件
  • 不用代码做网站html湖南营销型网站建设
  • 咸阳做网站的公司电话WordPress用AFC制作主题
  • 企业网站服务网站建设代理多少钱
  • 致力于做服务更好的网站建设公司什么网站允许搭建
  • 厦门网站建设方案策划建设网站企业网上银行登录官方
  • 网络销售的工作内容热狗seo外包
  • 营销展示型网站模板c2c网站建设需求分析
  • 个人网站下载推广计划和推广单元什么区别
  • wordpress的教程智推seo
  • 河南省建设教育协会网站程序源代码下载网站
  • 网站开发 印花税网站建设工作汇报
  • 新开发网站松江建网站
  • 国际公司湛江seo推广外包
  • 免费网站建设哪家好浙江网站建设 seo
  • 沧州市网站建设公司wordpress如何看网页地址
  • 高碑店网站建设价格万网归一
  • 长沙市网站开发北京网络开发公司
  • 新华网站建设网站标题和关键词一样
  • 网站的基本建设投资泰州seo外包公司
  • 网站建设托管合同公司网站建设一条龙
  • 绿色环保企业网站模板英特尔网站开发框架
  • 什么样建网站网页分析从哪些方面
  • wap网站 微信登录平面广告设计趋势
  • 授权网站系统互联网公司经营范围
  • seo搜索优化网站推广排名巨野城乡住房建设局网站
  • 文字头像在线制作免费生成seo网络营销的技术
  • 禅城南庄网站制作免费提升学历