还有你发的这个主板套异常坑爹,你要换的话 CPU 主板 内存 都得一起换 个人建议没换的必要
Java中的垃圾回收器几乎是面试中的必考点,无论是面试初级,中级还是高级,总免不了要问一问垃圾回收器的一些知识点。不管在实际开发中你使用程度怎么样,为了面试不被压价,还是非常有必要对它做一个较深入的理解。
本篇对JVM中常用的几种垃圾回收器的主要特点,使用场景及优化建议做一个简单介绍,希望起到抛砖引玉的效果,对你入门有所帮助。
新生代回收器
老年代回收器
新生代和老年代回收器
Serial收集器是最基本、发展 历史 最悠久的收集器。JDK1.3.1前是HotSpot新生代收集的唯一选择。
运行示意图
有如下特点:
简单高效,由于采用的是单线程的方法,因此与其他类型的收集器相比,对单个cpu来说没有了上下文之间的的切换,效率比较高。
会在用户不知道的情况下停止所有工作线程。
在用户的桌面应用场景中,可用内存一般不大,可以在较短时间内完成垃圾收集,只要不频繁发生,这是可以接受的
对于限定单个CPU的环境来说,Serial收集器没有线程切换开销,可以获得最高的单线程收集效率
ParNew收集器其实就是Serial收集器的多线程版本,除了使用多线程进行垃圾收集之外,其余均和Serial 收集器一致。
运行示意图
多线程版本的Serial,可以更加有效地利用系统资源
同Serial,会在用户不知道的情况下停止所有工作线程
Server模式下使用,亮点是除Serial外,目前只有它能与CMS收集器配合工作,是一个非常重要的垃圾回收器。
运行示意图
有如下特点:
追求高吞吐量,高效利用CPU,使吞吐量优先,且能进行精确控制。
根据相关特性,我们很容易想到它的使用场景,即:当应用程序运行在具有多个CPU上,对暂停时间没有特别高的要求时,程序主要在后台进行计算,而不需要与用户进行太多交互等就特别适合ParNew收集器。
Serial Old是Serial收集器的老年代版本,同样是一个单线程收集器,使用标记-整理算法。
有如下特点:
优劣势基本和Serial无异,它是和Serial收集器配合使用的老年代收集器。
CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。采用的算法是“标记-清除”,运作过程分为四个步骤:
运行示意图
有如下特点:
如常见WEB、B/S系统的服务器上的应用。
Parallel Old是Parallel Scavenge收集器的老年代版本,使用多线程和“标记-整理”算法,可以充分利用多核CPU的计算能力。
有如下特点:
优劣势参考Parallel Scavenge收集器。
这样在注重吞吐量以及CPU资源敏感的场景,就有了Parallel Scavenge(新生代)加Parallel Old(老年代)收集器的"给力"应用组合;
G1(Garbage-First)是JDK7-u4才推出商用的收集器
有如下特点:
G1收集器是当今收集器技术发展的最前沿成果。
G1 需要记忆集 (具体来说是卡表)来记录新生代和老年代之间的引用关系,这种数据结构在 G1 中需要占用大量的内存,可能达到整个堆内存容量的 20% 甚至更多。而且 G1 中维护记忆集的成本较高,带来了更高的执行负载,影响效率。
按照《深入理解Java虚拟机》作者的说法,CMS 在小内存应用上的表现要优于 G1,而大内存应用上 G1 更有优势,大小内存的界限是6GB到8GB。
个人以为G1已经基本全面压制cms、parallel等回收器,缺点见上面的劣势。但如果不是追求极致的性能,基本可以无脑G1
基本就介绍这些了,垃圾回收器基本不变的知识点多,学会(理解)可以应付N年的相关知识的面试,又是高频面试考点,各位同学还是值得在这块下点功夫的。文中有任何不足,错误欢迎指出,共同进步!
这种问题挺复杂的,有些原因真的很出意料,一般程式化的方法还找不到。1.先用浏览器F12控台查看一下网页加载资源的情况,看是不是某些资源加载慢的缘故。2.如果不是的话, 那就检查一下是不是网络问题。3.如果都不是上面的问题,你再去看下服务器的状况,应该有后台可以看,看下是不是带宽不足。(或者用top,iptraf命令看一下)4.最后还有问题的话看下你php代码是不是有问题,用xhprof看下代码哪里慢。---------例1:服务器: 戴尔 PowerEdge R620 Rack Mount Chassis今天公司的 web服务器响应异常的慢 平常 200ms 执行完毕的一个action,现在要 2秒多才能执行那个完毕。之前也出现过这种状况,但再重启之后就一般及解决了。遍历网上说是 1、网络原因 2、系统原因 3、硬件原因首先分析网络原因 我 ping 服务器的 接收到响应要1ms,平常都是小于 1ms2、系统原因我查看了任务管理器发现 CPU 横容易就奔向100%了。4 个cpu 核心 马上冲向顶端持平了。3、硬件原因听网上说可能还有一部分磁盘 i/o 也会导致运行速度大减的2、3 部分图片当时很着急解决问题没有截图、下面是今天晚上服务器 恢复正常后的基本空闲时的cpu 状况、和磁盘读取状况 想问一下、普通我这种刀片服务器正常运行时oracle 的一般最高读写速度、为什么怎样找到程序中那个可能正执行死循环的程序经过之前一天的推测,觉得应该是服务器上的另一个应用服务器,出现了死循环,联系了此程序开发人员让其恢复了上一个版本,问题就没有了。就是那一个个验证推测麻烦,花了我一天的时间,想直接知道哪里死循环。经过之前一天的推测,觉得应该是服务器上的另一个应用服务器,出现了死循环,联系了此程序开发人员让其恢复了上一个版本,问题就没有了。就是那一个个验证推测麻烦,花了我一天的时间,想直接知道哪里死循环。例2:我的WIN2003独立服务器(P4 2.8G/1G的方正商用机,非专业服务器),ACCESS数据库有800多兆,同时在线会员100多人。浏览速度很慢,日发帖从1000多锐减到200多贴,网友怨声载道,不得已才转换到DZ。转换后DZ的数据库有600多兆。刚开始挺快的,随后升级到DZ6.1,现在过了才1个多月,服务器响应越来越慢。CPU占用并不高,通常不到20%,内存占用好像也正常。就是经常硬盘灯一直亮(是常亮,不是闪亮),每到这时论坛页面就打不开,有时光显示页面头部,要等很长时间。硬盘灯不常亮的时候速度挺快。以前是一两天出现一次,后来越来越频繁,现在过不多大会儿就出现一次,简直受不了了。相信很多人在用windows2003服务器或者vps,而且一开始用,速度都相当的快,但是过了几天速度变慢了很多,也会遇到有时候网站打开卡等现象,即使网站没什么流量也会出现。有时候就会怀疑是不是我的服务器或者vps很差劲,买到假货了?其实不然。其实这些问题作祟的都是w3wp.exe这个iis进程在捣鬼。在WINDOWS2003+IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。遇到这些现象,我们可以用以下方法进行解决,不影响网站运营及系统问题。可以做以下配置修改进行改善:1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的web工作进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存。一般来说就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。那么,怎么样才能找到是哪一个网站的?解决办法:1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池3、到iis中察看该应用程序池对应的网站,就可以了。欢迎分享,转载请注明来源:夏雨云
评论列表(0条)