1+7+7的27的1次方加到7的n次方+7的37的1次方加到7的n次方+一直加到七的20227的1次方加到7的n次方

《深入理解java虚拟机》+宋红康老师+阳哥大厂面试题2总结整理

堆位于运行时数据区中是线程共享的。一个进程对应一个实例。一个jvm实例对应一个运行时数据区。一个运行时数据区有一个堆空间。

java堆区在jvm启动的时候就被创建了,其空间大小也就被确定了(堆是jvm管理的最大的内存空间)java堆的大小是可以调节的。

jdk1.7的时候将永久代中的字符串常量池和静态变量移到了堆中;jdk1.8的时候jvm有很大的改进:使用元空间(mate space)取代了永久代,并把方法区移到了本地内存。

java 8及之后堆内存逻辑上分为三个部分:新生区养老区元空间

年轻代又可以划分为Eden(伊甸园区)、Survivor0Survivor1(幸存者0/1区有时候也叫做from区和to区),默认比例是8:1:1。

在进行GC时,并非每次对三个内存(新生代、老年代、方法区)区域一起回收,大部分时候回收的都是新生代。

针对Hotspot VM 的实现,它里面的GC按照回收区域分为两种大类:一种是部分收集(Partial GC),另一种是整堆收集(Full GC)。

1)部分收集(Partial GC):只针对部分区域进行垃圾收集。其中又分为:

②老年代收集(Major GC/Old GC):只针对 老年代的垃圾收集。

目前,只有CMS收集器会有单独收集老年代的行为。

注意,很多时候,Major GC 会和Full GC混淆使用,需要具体分辨是老年代的回收还是整堆回收。

③混合收集(Mixed GC):指目标是收集整个新生代以及部分老年代的垃圾收集。

目前只有G1收集器会有这种行为。

2)整堆收集(Full GC):收集整个Java堆和方法区的垃圾收集。

2.不同区域GC的触发机制

  • 当年轻代空间不足时,就会触发Minor GC,这里的年轻代满指的是 Eden区满。Survivor 区满不会触发GC 。

    因为Java对象大多具有朝生夕死的特性,所以Minor GC非常频繁,一般回收的速度也比较快

  • 当老年代空间不足时,会先尝试触发Minor GC,如果之后空间还不足,则触发Major GC。但是也并不是绝对的,CMS是唯一个老年代空间不足时只回收老年代,不触发Minor GC的并发垃圾收集器

    如果进行Major GC后,老年代空间还是不足,就会报OOM了

  • (1)调用System.gc时,系统建议执行Full GC,但是不一定会执行 。 (2)老年代空间不足 (3)方法区空间不足(主要收集常量池中废弃的常量和不再使用的类型) (4)通过 Minor GC 后进入老年代的空间大于老年代的可用内存 (5)由Eden区、survivor space0(From Space)区向survivor space1(To Space)区复制时,对象大小大于To Space可用内存,则把该对象转存到老年代,且老年代的可用内存小于该对象大小 。

频繁收集新生代,较少收集老年代,几乎不动永久代

*以下提到的移动实际上是复制

1.当我们new了一个对象一般直接放入Eden区(大对象直接放入老年代)

2.Eden区满时,程序再次创建对象,将会触发Minor GC,将Eden区不再引用的对象销毁,并将Eden区剩余还在引用的对象移到survivor0区,将移过去的对象的年龄计数器+1,

3.继续new对象,放入Eden区,当Eden区再次空间不足时,又会触发Minor GC,对Eden区不再引用的对象进行垃圾回收,将仍然存活的对象放入survivor1区(to区),并将survivor0区仍然存活的对象(不再引用的回收掉)移到survivor1区,将这些对象的年龄计数器+1,将s0区变成to区,s1区变成from区(移动完成交换from和to,谁空谁是to)

4.当Eden区又满了的时候,再次触发Minor GC,将Eden区中仍然存活的对象移到to区,将from区的仍存在引用对象移到to区,这时,发现from区部分对象的年龄已经达到了最大分代年龄(默认15,可以通过参数-XX:MaxTenuringThreshold=N进行修改),于是将这些对象晋升至老年代,将移动对象的年龄计数器+1。

或者,当从Eden区/from区向to区移动对象时,发现to区满了,也会将这些对象直接晋升到老年代。

5.当刚刚经历过Minor GC后,Eden区为空(不用的对象被回收,有用的对象移到to区),再次new对象时,发现Eden区放不下,也就是这是个大对象,就将其直接放入老年代

6.如果在5的情况下,老年代仍然放不下的话,触发Major GC(Full GC),如果回收后,仍然放不下就报oom

方法区的垃圾收集主要回收两部分内容:废弃的常量和不再使用的类型。

1.判断一个常量是否废弃,就是看虚拟机中是否有其他地方引用这个常量。

2.判定一个类型是否属于“不再被使用的类”的条件就 比较苛刻了。需要同时满足下面三个条件:

  • 该类所有的实例都已经被回收,也就是Java堆中不存在该类及其任何派生子类的实例。

  • 加载该类的类加载器已经被回收,这个条件除非是经过精心设计的可替换类加载器的场景,如 OSGi、JSP的重加载等,否则通常是很难达成的。

  • 该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方 法。

在大量使用反射、动态代理、CGLib等字节码框架,动态生成JSP以及OSGi这类频繁自定义类加载 器的场景中,通常都需要Java虚拟机具备类型卸载的能力,以保证不会对方法区造成过大的内存压 力。

《Java虚 拟机规范》中提到过可以不要求虚拟机在方法区中实现垃圾收集,事实上也确实有未实现或未能完整 实现方法区类型卸载的收集器存在(如JDK 11时期的ZGC收集器就不支持类卸载)

在对象中添加一个引用计数器,每当有一个地方 引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可 能再被使用的。

每次对对象进行赋值时均要维护引用计数器,增加了时间开销;

需要占用一些额外的内存空间进行计数;

较难解决循环引用的问题(JVM的实现一般不采用这种方式)

比如:对象objA和objB都有字段instance,赋值令 objA.instance=objB及objB.instance=objA,除此之外,这两个对象再无任何引用,实际上这两个对象已 经不可能再被访问,但是它们因为互相引用着对方,导致它们的引用计数都不为零,引用计数算法也 就无法回收它们。

也叫根搜索算法,通过 一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过 程所走过的路径称为“引用链”(Reference Chain),如果某个对象到GC Roots间没有任何引用链相连(从GC Roots到这个对象不可达)时,则证明此对象是不可能再被使用的。

GC Roots集合就是一组必须活跃的引用

所有收集器在根节点枚举这一步骤时都是必须暂停用户线程的

如图3-1所示,对象object 5、object 6、object 7虽然互有关联,但是它们到GC Roots是不可达的, 因此它们将会被判定为可回收的对象。

  • 在虚拟机栈(栈帧中的本地变量表)中引用的对象,譬如各个线程被调用的方法堆栈中使用到的 参数、局部变量、临时变量等。

  • 在堆中类静态属性引用的对象,譬如Java类的引用类型静态变量。

  • 方法区中常量引用的对象。

  • 在本地方法栈中JNI(即通常所说的Native方法)引用的对象。

  • Java虚拟机内部的引用,如基本数据类型对应的Class对象,一些常驻的异常对象(比如 NullPointExcepiton、OutOfMemoryError)等,还有系统类加载器。

  • 所有被同步锁(synchronized关键字)持有的对象。

  • 反映Java虚拟机内部情况的JMXBean、JVMTI中注册的回调、本地代码缓存等

除了这些固定的GC Roots集合以外,根据用户所选用的垃圾收集器以及当前回收的内存区域不 同,还可以有其他对象“临时性”地加入,共同构成完整GC Roots集合。

谈谈强引用、软引用、弱引用、虚引用、引用队列、WeakHashMap

该算法分为“标记”“清除”两个阶段:首先标记出所有需要回 收的对象,在标记完成后,统一回收掉所有被标记的对象,也可以反过来,标记存活的对象,统一回 收所有未被标记的对象。标记过程就是对象是否属于垃圾的判定过程(可达性分析算法)。

1.需要经过两次扫描,执行效率不稳定

如果Java堆中包含大量对 象,而且其中大部分是需要被回收的,这时必须进行大量标记和清除的动作,导致标记和清除两个过 程的执行效率都随对象数量增长而降低

标记、清除之后会产生大 量不连续的内存碎片,空间碎片太多可能会导致当以后在程序运行过程中需要分配较大对象时无法找 到足够的连续内存而不得不提前触发另一次垃圾收集动作

新生代的Minor GC常使用标记-复制算法

1969年Fenichel提出了一种称为“半区复制”(Semispace Copying)的垃圾收集算法,它将可用 内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着 的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。

 Hospot虚拟机,将新生代划分为Eden区、s0区、s1区三部分,针对这三部分来进行标记复制清除。

(在前面“垃圾回收流程”中已经谈过了,忘记了可以划上去看看)

1.解决了标记-清除算法面对大量可回收对象时执行效率低 的问题

每次都是针对整个半区进行内存回收

只要移动堆顶指针,按顺序分配即可,实现简单,运行高效。

1.如果内存中多数对象都是存 活的,这种算法将会产生大量的内存间复制的开销

内存空间被分成了几份,可用的内存空间缩小了

老年代的Major GC常使用标记-整理算法

标记-整 理(Mark-Compact)算法,其中的标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可 回收对象进行清理,而是让所有存活的对象都向内存空间一端移动,然后直接清理掉边界以外的内 存

1.不会导致空间碎片化

2.能够提高程序的吞吐量

1.移动对象,更新引用,需要成本,影响性能

2.移动对象的操作需要全程暂停用户线程(STW),增加耗时

为什么老年代不使用标记-复制算法?

标记-复制算法在对象存活率较高时就要进行较多的复制操作,效率将会降低,并且还会浪费内存空间。老年代中的对象一般存活时间都比较长,不易被回收,那就需要进行大量的复制操作,并且老年代中可能存在大对象,需要比较大的内存空间。

标记-清除算法与标记-整理的对比

1.本质差异在于前者是一种非移动式的回收算法,而后者是移动式的。

2.标记-清除算法也是需要停顿用户线程来标记、清理可回收对象的,只是停顿时间相对而言要短;而标记-整理算法因为还要移动对象,用户线程的停顿时间更长。

3.相比标记-清除算法,标记-整理算法的程序总吞吐量更高的。(吞吐量一般指使用垃圾收集的用户程序和收集器的效率总和)因为内存分配和访问相比垃圾收集频率要 高得多,这部分的耗时增加,总吞吐量仍然是下降的。

总之,不管是否移动对象都存在弊端,移动则内存回收时会更复杂,不移动则内存分配时会 更复杂(产生内存碎片,需要依赖更为复杂的内存分配器和内存访问器来解决)。

HotSpot虚拟机里面关注吞吐量的Parallel Scavenge收集器是基于标记-整理算法的,而关注延迟的CMS收集器则是基于标记-清除算法的

还有一种做法是让虚 拟机平时多数时间都采用标记-清除算法,暂时容忍内存碎片的存在,直到内存空间的碎片化程度已经 大到影响对象分配时,再采用标记-整理算法收集一次,以获得规整的内存空间。前面提到的基于标 记-清除算法的CMS收集器面临空间碎片过多时采用的就是这种处理办法。

1.所有收集器在根节点枚举这一步骤时都是必须暂停用户线程的,因为若根节点集合的对象引用关系不断变化,分析结果的准确性是无法保证的。

2.目前主流Java虚拟机使用的都是准确式垃圾收集,准确式内存管理是指虚拟机可以知道内存中某个位 置的数据具体是什么类型。在HotSpot 的解决方案里,是使用一组称为OopMap的数据结构来达到这个目的。一旦类加载动作完成的时候, HotSpot就会把对象内存偏移量上是什么类型的数据计算出来,在即时编译过程中,也 会在特定的位置记录下栈里和寄存器里哪些位置是引用。这样收集器在扫描时就可以直接得知这些信 息了,并不需要真正一个不漏地从方法区等GC Roots开始查找。

看一下OopMap这个数据结构:

在OopMap的协助下,HotSpot可以快速准确地完成GC Roots枚举,但是,导致OopMap内容变化的指令非常多,HotSpot并没有为每条指令都生成OopMap,只是在“特定的位置”记录 了这些信息,这些位置被称为安全点(Safepoint)。

是不是不太明白?看一张图

有了安全点的设定,也就决定了用户程序执行时 并非在代码指令流的任意位置都能够停顿下来开始垃圾收集,而是强制要求必须执行到达安全点后才 能够暂停。因此,安全点的选定既不能太少以至于让收集器等待时间过长,也不能太过频繁以至于过 分增大运行时的内存负荷。

安全点位置的选取基本上是以“是否具有让程序长时间执行的特征”为标准 进行选定的,"长时间执行”的最明显特征就是指令序列的复用,例如方法调用循环跳转异常跳转 等都属于指令序列复用,所以只有具有这些功能的指令才会产生安全点。

3.如何在垃圾收集发生时让所有线程都跑到最近的安全点,然后停顿下来?

  • 抢先式中断不需要线程的执行代码 主动去配合,在垃圾收集发生时,系统首先把所有用户线程全部中断,如果发现有用户线程中断的地 方不在安全点上,就恢复这条线程执行,让它一会再重新中断,直到跑到安全点上。

  • 是当垃圾收集需要中断线程的时候,不直接对线程操作,仅仅简单地设置一 个标志位,各个线程执行过程时会不停地主动去轮询这个标志,一旦发现中断标志为真时就自己在最 近的安全点上主动中断挂起。轮询标志的地方和安全点是重合的。

    下面代码清单3-4中的test指令就是HotSpot生成的轮询指 令,当需要暂停用户线程时,虚拟机把0x160100的内存页设置为不可读,那线程执行到test指令时就会 产生一个自陷异常信号,然后在预先注册的异常处理器中挂起线程实现等待,这样仅通过一条汇编指 令便完成安全点轮询和触发线程中断了。

     总结来说就是:会在某些安全点后设置一条指令(当然不是所有安全点),当需要暂停用户线程进行垃圾收集时,将该指定所要访问的页面置为不可读。

1.为什么出现安全区域?

如果用户线程处于Sleep状态或者Blocked状态,这时候线程无法响应虚拟机的中断请求,不能再走 到安全的地方去中断挂起自己,虚拟机也显然不可能持续等待线程重新被激活分配处理器时间。对于 这种情况,就必须引入安全区域(Safe Region)来解决。

安全区域是指能够确保在某一段代码片段之中,引用关系不会发生变化,因此,在这个区域中任 意地方开始垃圾收集都是安全的。我们也可以把安全区域看作被扩展拉伸了的安全点。

当用户线程执行到安全区域里面的代码时,首先会标识自己已经进入了安全区域,那样当这段时 间里虚拟机要发起垃圾收集时就不必去管这些已声明自己在安全区域内的线程了。当线程要离开安全 区域时,它要检查虚拟机是否已经完成了根节点枚举(或者垃圾收集过程中其他需要暂停用户线程的 阶段),如果完成了,那线程就当作没事发生过,继续执行;否则它就必须一直等待,直到收到可以 离开安全区域的信号为止。

用户执行到sleep时,会标识自己已经进入安全区域,那之后如果要进行垃圾收集,不用管这些阻塞或挂起的线程,只需要让其他不在安全区域的线程,走到安全点挂起自己即可,等sleep的线程被唤醒后,检查虚拟机是否已经不需要用户线程暂停了,如果是,继续执行;不是,挂起等待。

1.为什么会出现记忆集?

为解决对象跨代引用所带来的问题,垃圾收集器在新生代中建 立了名为记忆集(Remembered Set)的数据结构,用以避免把整个老年代加进GC Roots扫描范围。

记忆集是一种用于记录从非收集区域指向收集区域的指针集合的抽象数据结构。

3.什么是卡表?(仔细阅读理解一下)

“卡表”(Card Table)“是记忆集的一种实现方式,”卡表“中每个记录精确到一块内存区域,该区域内有对象含有跨代指针

HotSpot虚拟机中的”卡表“是一个字节数组,字节数组中的每一个元素都存储着一个标识(0或1),这个标识是用来标志:内存区域中一块特定大小的内存块是否变脏(只要这块内存区域中有一个对象存在着跨代指针,就标识为1,称这个元素变脏;没有就标识为0),也就是说,数组中的每个元素都会对应标识一个内存块,这个内存块被称作“卡页”(Card

4.那么,我们怎么知道数组中的每个元素,与哪个”卡页“相对应呢?(数组中的每个元素标识着那块内存区域呢?)

我们可以看到this address >> 9 ,就是将内存块的起始地址右移9位(除以512)就得到了:这个内存块的标识所在的索引位置,那么我们来进行反推,标识所在的索引位置 * 512 字节= 内存块的起始地址,那么,索引为0,1,2的元素所标识的内存块的起始地址分别为 0,512,1024,所以每个内存块(”卡表“)的大小为512字节。

当然前提是,卡表标识的内存区域的起始地址是0,如果卡表标识的内存区域起始地址为N字节,那么计算内存块的起始地址就需要:N + 标识所在的索引位置 * 512 字节= 内存块的起始地址

1.卡表中的元素何时变脏?

有其他分代区域中对象引用了本区域对象时,其对应的 卡表元素就应该变脏,变脏时间点原则上应该发生在引用类型字段赋值的那一刻。

2.卡表元素如何变脏(如何在对象赋值的那一刻去更新维护卡表)?

在HotSpot虚拟机里是通过写屏障(Write Barrier)技术维护卡表状态的。(注:不是内存屏障)

3.什么是写屏障?(注:与内存屏障无关)

写屏障可以看作在虚拟机层面对“引用类型字段赋值”这个动作的AOP切 面(通过预编译方式和运行期动态代 理实现程序功能的统一维护的一种技术),在引用对象赋值时会产生一个环形(Around)通知,供程序执行额外的动作,也就是说赋值的 前后都在写屏障的覆盖范畴内。

简单说就是:通过写屏障,能在引用类型字段赋值前后,做一些其他的事情

虽然,每次只要对引用进行更新,就会产生额外 的开销,不过这个开销与Minor GC时扫描整个老年代的代价相比还是低得多的。

当前主流编程语言的垃圾收集器基本上都是依靠可达性分析算法来判定对象 是否存活的,可达性分析算法理论上要求全过程都基于一个能保障一致性的快照中才能够进行分析, 这意味着必须全程冻结用户线程的运行-->GC Root根节点枚举。

由于GC Roots相比 起整个Java堆中全部的对象毕竟还算是极少数,且在各种优化技巧(如OopMap)的加持下,它带来 的停顿已经是非常短暂且相对固定(不随堆容量而增长)的了。

但是,从GC Roots再继续往下遍历对象 图,这一步骤的停顿时间就必定会与Java堆容量直接成正比例关系了:堆越大,存储的对象越多,对 象图结构越复杂,要标记更多对象而产生的停顿时间自然就更长,所以有些追求停顿时间短的垃圾收集器,需要标记对象与用户线程并发执行。

可达性分析的扫描过程:

我们引入三色标记(Tri-color Marking)作为工具来辅 助推导,把遍历对象图过程中遇到的对象,按照“是否访问过”这个条件标记成以下三种颜色:

  • 白色:表示对象尚未被垃圾收集器访问过。显然在可达性分析刚刚开始的阶段,所有的对象都是 白色的,若在分析结束的阶段,仍然是白色的对象,即代表不可达。

  • 黑色:表示对象已经被垃圾收集器访问过,且这个对象的所有引用都已经扫描过。黑色的对象代 表已经扫描过,它是安全存活的,如果有其他对象引用指向了黑色对象,无须重新扫描一遍。黑色对 象不可能直接(不经过灰色对象)指向某个白色对象。

  • 灰色:表示对象已经被垃圾收集器访问过,但这个对象上至少存在一个引用还没有被扫描过。

    前面提到了,要想缩短用户线程停顿时间,需要用户线程与收集器是并发工作,那就会存在问题:

    一种是把原本消亡的对象错误标记为存活

    另一种是把原本存活的对象错误标记为已消亡,这就是非常致命的后果了

Wilson于1994年在理论上证明了,当且仅当以下两个条件同时满足时,会产生“对象消失”的问 题,即原本应该是黑色的对象被误标为白色:

  • 赋值器插入了一条或多条从黑色对象到白色对象的新引用(在已经扫描过的黑色对象上插入了新的引用对象)

  • 赋值器删除了全部从灰色对象到该白色对象的直接或间接引用(从还没有扫描完成的灰色对象上删除了没扫描到的白色对象)

因此,我们要解决并发扫描时的对象消失问题,只需破坏这两个条件的任意一个即可。由此分别 产生了两种解决方案:增量更新(Incremental Update)原始快照(Snapshot At The Beginning, SATB)。

  • 增量更新要破坏的是第一个条件,当黑色对象插入新的指向白色对象的引用关系时,就将这个新 插入的引用记录下来,等并发扫描结束之后,再将这些记录过的引用关系中的黑色对象为根,重新扫 描一次。这可以简化理解为,黑色对象一旦新插入了指向白色对象的引用之后,它就变回灰色对象 了。

  • 原始快照要破坏的是第二个条件,当灰色对象要删除指向白色对象的引用关系时,就将这个要删 除的引用记录下来,在并发扫描结束之后,再将这些记录过的引用关系中的灰色对象为根,重新扫描 一次。这也可以简化理解为,无论引用关系删除与否,都会按照刚刚开始扫描那一刻的对象图快照来 进行搜索。

    以上无论是对引用关系记录的插入还是删除,虚拟机的记录操作都是通过写屏障实现的。在 HotSpot虚拟机中,增量更新和原始快照这两种解决方案都有实际应用,譬如,CMS是基于增量更新 来做并发标记的,G1、Shenandoah则是用原始快照来实现。

垃圾收集器就是GC算法的落地实现。到目前为止,还没有完美的收集器出现,更加没有万能的收集器,只是针对程序,应用最合适的收集器,进行分代收集

针对新生代和老年代的垃圾收集器,有些可以搭配使用;一般,确定了年轻代的GC老年代的GC也随之确定

1.Serial收集器(串行垃圾收集器)

这个收集器是一个单线程工作的收集器,它进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束(“Stop The World”)。

Serial垃圾收集器是最古老,但是简单而高效(与其他收集器的单线程相比),对于内 存资源受限的环境,它是所有收集器里额外内存消耗(Memory Footprint)最小的;对于单核处理 器或处理器核心数较少的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以 获得最高的单线程收集效率,它是HotSpot虚拟机运行在客户端模式下的默认新生 代收集器。

新生代和老年代都会使用串行垃圾回收器,新生代使用复制算法,老年代采用标记-整理算法

ParNew收集器采用多线程并行的垃圾回收方式,在垃圾收集时,会STW暂停其他所有的工作线程直到它收集结束。

World、对象分配规 则、回收策略等都与Serial收集器完全一致,在实现上这两种收集器也共用了相当多的代码。

新生代使用复制算法,老年代采用标记-整理算法

它默认开启的收集线程数与处理器核心数量相同,可以使用参数-XX:ParallelGCThreads=N,来限制垃圾收集的线程数

除了Serial收集器外,目前只有它能与CMS 收集器配合工作。但是,JDK 9开始,Serial+CMS这个组合也被取消了,并直接取消了-XX:+UseParNewGC参数,可以理解为:ParNew合并入CMS。

在单核处理器的环境中,会存在线程交互的开销

Parallel Scavenge收集器也是一款基于标记-复制算法实现的新生代收集器,也是 能够并行收集的多线程收集器,它和ParNew非常相似。

它也是需要暂停用户线程的。

Parallel Scavenge收集器的特点是:它的关注点与其他收集器不同,CMS等收集器的关注点是尽可能 地缩短垃圾收集时用户线程的停顿时间,而Parallel Scavenge收集器的目标则是达到一个可控制的吞吐 量(Throughput)

比如:用户代码加上垃圾收集总共耗费了100分钟,其中垃圾收集花掉1分 钟,那吞吐量就是99%。

允许的值是一个大于0的毫秒数,收集器将尽力保证内存回收花费的 时间不超过用户设定值。

停顿时间越短就越适合需要与用户交互或需要保证服务响应质量的程序,良 好的响应速度能提升用户体验;

不过时间不是设置的越小越好,垃圾收集停顿时间缩短是以牺牲吞吐量和新生代空间为代价换取的:系统把新生代调得小一些,收集300MB新生代肯定比收集500MB快,但这也直接导致垃圾收集发生得 更频繁,原来10秒收集一次、每次停顿100毫秒,现在变成5秒收集一次、每次停顿70毫秒。停顿时间 的确在下降,但吞吐量也降下来了。

-XX:GCTimeRatio参数的值则应当是一个大于0小于100的整数,也就是运行用户代码时间/垃圾收集时间。比如:设置为19,也就是19/1,允许的最大垃圾收集时间为:1/(19+1)=5%。

高吞吐量则可以最高效率地利用处理器资源,尽快完成程序的运算 任务,主要适合在后台运算而不需要太多交互的分析任务。

这是一 个开关参数,当这个参数被激活之后,就不需要人工指定新生代的大小(-Xmn)、Eden与Survivor区 的比例(-XX:SurvivorRatio)、晋升老年代对象大小(-XX:PretenureSizeThreshold)等细节参数 了,虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时 间或者最大的吞吐量。

自适应调节策略也是Parallel Scavenge收集器区别于ParNew收集器的一个重要特性。

新生代使用复制算法,老年代使用标记-整理算法

Serial Old是Serial收集器的老年代版本,它同样是一个单线程收集器,使用标记-整理算法。这个收 集器的主要意义也是供客户端模式下的HotSpot虚拟机使用。

它也是需要暂停用户线程的。

只要年轻代开启Serial/PerNew,老年代的Serial Old会自动开启,但是不能单独配置。

Parallel Old是Parallel Scavenge收集器的老年代版本,支持多线程并发收集,基于标记-整理算法实 现,它也是需要暂停用户线程的。

这个收集器是直到JDK 6时才开始提供的。

在JDK1.6之前,如果新生代选择了Parallel Scavenge收集器,老年代只能选择Serial Old(PS MarkSweep)收集器,由于单线程的老年代收集中无法充分利用服务器多处理器的并行处 理能力,在老年代内存空间很大而且硬件规格比较高级的运行环境中,这种组合的总吞吐量甚至不一 定比ParNew加CMS的组合来得优秀。

在注重 吞吐量或者处理器资源较为稀缺的场合,都可以优先考虑Parallel Scavenge加Parallel Old收集器这个组 合

如果不加参数,默认参数:-XX:+UseParallelGC,年轻代和老年代使用这两个垃圾收集器,也就是它们是服务端模式下的默认垃圾收集器

新生代使用复制算法,老年代使用标记-整理算法

CMS(Concurrent Mark Sweep并发标记清除)收集器是一种以获取最短回收停顿时间为目标的收集器

CMS收集器适合用在互联网网站或者基于浏览器的B/S系统的服务端上,这类应用通常都会较为 关注服务的响应速度,希望系统停顿时间尽可能短,以给用户带来良好的交互体验。

它是基于标记-清除算法实现的。

它的运作过程分为四个步骤:

初始标记仅仅只是标记一下GC Roots能直接关联到的对象,速度很快,仍然需要“Stop The World”

并发标记阶段就是从GC Roots的直接关联对象开始遍历整个对 象图的过程,这个过程耗时较长但是不需要停顿用户线程,可以与垃圾收集线程一起并发运行

重 新标记阶段则是为了修正并发标记期间,因用户程序继续运作而导致标记产生变动的那一部分对象的 标记记录,这个阶段的停顿时间通常会比初始标记阶段稍长一 些,但也远比并发标记阶段的时间短。

最后是并发清除阶段,清理删除掉标记阶段判断的已经死亡的 对象,由于不需要移动存活对象,所以这个阶段也是可以与用户线程同时并发的。

由于在整个过程中耗时最长的并发标记和并发清除阶段中,垃圾收集器线程都可以与用户线程一 起工作,所以从总体上来说,CMS收集器的内存回收过程是与用户线程一起并发执行的。

1.并发执行对CPU资源的压力比较大

在并发阶段,它虽然不会导致用户线程停顿,但却会因为占用了一部分线程(或者说处理器的计 算能力)而导致应用程序变慢,降低总吞吐量。

CMS默认启动的回收线程数是(处理器核心数量 +3)/4,也就是说,如果处理器核心数在四个或以上,并发回收时垃圾收集线程只占用不超过25%的 处理器运算资源,并且会随着处理器核心数量的增加而下降。但是当处理器核心数量不足四个时, CMS对用户程序的影响就可能变得很大。如果应用本来的处理器负载就很高,还要分出一半的运算能 力去执行收集器线程,就可能导致用户程序的执行速度忽然大幅降低。

为了缓解这种情况,虚拟机提 供了一种称为“增量式并发收集器”(Incremental Concurrent Mark Sweep/i-CMS)的CMS收集器变种, 所做的事情是在并发标记、清理的时候让收集器线程、用户线程交替运行,尽量减少垃圾收集线程的独占资源的 时间,这样整个垃圾收集的过程会更长,但对用户程序的影响就会显得较少一些,直观感受是速度变 慢的时间更多了,但速度下降幅度就没有那么明显。实践证明增量式的CMS收集器效果很一般,从 JDK 7开始,i-CMS模式已经被声明为“deprecated”,即已过时不再提倡用户使用,到JDK 9发布后i-CMS模式被完全废弃。

2.可能出现并发失败进而导致另一次完全STW的Full GC的产生

由于并发执行,在垃圾收集阶段用户线程还需要持续运 行,那就还需要预留足够内存空间提供给用户线程使用,因此CMS收集器不能像其他收集器那样等待 到老年代几乎完全被填满了再进行收集,必须预留一部分空间供并发收集时的程序运作使用。

要是CMS运行期间预留的内存无法满 足程序分配新对象的需要,就会出现一次“并发失败”(Concurrent Mode Failure),这时候虚拟机将触发担保机制暂停用户线程临时启用Serial Old收集器来重新进行老年代的垃圾收集

在JDK5中,默认当老年代使用了68%的空间后CMS收集器就会被激活,可以通过参数-XX:CMSInitiatingOccupancyFraction的值 来提高CMS的触发百分比,降低内存回收频率,获取更好的性能;但是,参数设置的太高将会很容易导致 大量的并发失败产生,性能反而降低,用户应在生产环境中根据实际应用情况来权衡设置。

到了JDK6,CMS收集器的启动 阈值就已经默认提升至92%。

3.收集结束时会产生大量空间碎片

CMS是一款基于“标记-清除”算法实现的收集器,收集结束时会有大量空间碎片产生。空间碎片过多,当有大对象时,即使老年代还有很多剩余空间,但是,无法找到足够大的连续空间来分配当前对象,而不得不提前触发一次Full GC。

GC时开启内存碎片的合并整理过程,对内存碎片进行整理,(在Shenandoah和ZGC出现前)是无法并发的,需要暂停用户线程,但是,停顿时间又会变长。所以又提供了-XX:CMSFullGCsBeforeCompaction=N(此参数从JDK 9开始废弃)参数,该参数的作用就是,前N次Full GC不整理空间碎片,下一次进入Full GC前会先进行碎片整理(默认值为0,表 示每次进入Full GC时都进行碎片整理)。

年轻代使用标记-复制算法,老年代使用标记-清除算法

G1是一款主要面向服务端应用的垃圾收集器。应用在多处理器大容量的内存环境中,在实现高吞吐量的同时,尽可能满足垃圾收集暂停时间的要求(目标是在延迟可控的情况下获得尽可能高的吞吐

G1垃圾回收器的特点:

  • G1可以面向堆内存任 何部分来组成回收集(Collection Set,一般简称CSet)进行回收,衡量标准不再是它属于哪个分代,而 是哪块内存中存放的垃圾数量最多,回收收益最大,这就是G1收集器的Mixed GC模式。

  • G1仍是遵循分代收集理 论设计的,但是它“化整为零”,把连续的Java堆划分为多个大小相等的独立区域(Region),每一个Region都可以 根据需要,扮演新生代的Eden空间、Survivor空间,或者老年代空间。收集器能够对扮演不同角色的 Region采用不同的策略去处理

  • 虽然G1仍然保留新生代和老年代的概念,但新生代和老年代不再是固定的了,它们都是一系列区 域(不需要连续)的动态集合

  • Region中还有一类特殊的Humongous区域,专门用来存储大对象。G1认为只要大小超过了一个 Region容量一半的对象即可判定为大对象。

  • Region作为老年代 的一部分来进行看待。

    (默认将整堆划分为2048个区域,也即能够支持的最大内存为32M*MB=64GB)

  • G1收集器可以跟踪各个Region里面的垃 圾堆积的“价值”大小,然后在后台维护一 个优先级列表,每次根据用户设定允许的收集停顿时间(用户可以通过-XX:MaxGCPauseMillis参数指定期望停顿时间,默 认值是200毫秒) ,优先处理回收价值收益最大的那些Region。

G1收集器的 运作过程大致可划分为以下四个步骤

  • 只是标记一下GC Roots能直接关联到的对象,并且修改TAMS 指针的值,让下一阶段用户线程并发运行时,能正确地在可用的Region中分配新对象。这个阶段需要 停顿线程,但耗时很短。

  • 从GC Root开始对堆中对象进行可达性分析,递归扫描整个堆 里的对象图,找出要回收的对象,这阶段耗时较长,但可与用户程序并发执行。当对象图扫描完成以 后,还要重新处理SATB(原始快照)记录下的在并发时有引用变动的对象。

  • 对用户线程做另一个短暂的暂停,用于处理并发阶段结束后仍遗留 下来的最后那少量的SATB记录。

  • 负责更新Region的统计数据,对各个Region的回 收价值成本进行排序,根据用户所期望的停顿时间来制定回收计划,可以自由选择任意多个Region 构成回收集,然后把决定回收的那一部分Region的存活对象复制到空的Region中,再清理掉整个旧 Region的全部空间。这里的操作涉及存活对象的移动,是必须暂停用户线程,由多条收集器线程并行 完成的。

以年轻代为例,看G1是如何进行Young GC的:

 (G1收集器将整个的内存区都混合在一起了,但其本身依然在小范围内要进行年轻代和老年代的划分,依然会采用不同的GC方式处理不同的区域

针对Eden区进行收集,Eden区耗尽后会被触发,主要是小区域收集+形成连续的内存块

  • 把Eden区的存活对象复制到某些空闲区域(这些空闲区域可连续,可不连续,主要目的是减少内存碎片),把这些空闲区域作为新的survivor区,如果空闲区域放不下了(新的survivor区),将这部分对象晋升至老年代,然后清除整个旧的Region。

  • 原survivor区的存活对象复制到新的survivor区(可以看出G1中不再有明确的to space区了,而是选取空闲的区域作为to区),放不下的对象晋升至老年代,然后清除整个旧的Region。

  • 最后清理结束,用户线程继续执行。

G1与CMS进行对比:

  • G1可以指定最大停顿时间、物理上采用了Region的内存布局、可以按收益动态确定回收集

  • CMS采用的是“标记-清除”算法,G1从整体上看是基于“标记-整理”算法实现的,但从局部上看,又是基于“标记-复制”算法实现的,基于这两种算法,G1运行期间不会产生内存碎片

  • G1为了垃圾收集产生的内存占用(Footprint)比CMS高

    虽然G1和CMS都使用卡表来处理跨代指针,但G1的卡表实现更为复杂,而且 堆中每个Region,都必须有一份卡表,这导致G1的记忆集(和 其他内存消耗)可能会占整个堆容量的20%乃至更多的内存空间;相比起来CMS的卡表就相当简单, 只有唯一一份,而且只需要处理老年代到新生代的引用,反过来则不需要,由于新生代的对象具有朝 生夕灭的不稳定性,引用变化频繁,能省下这个区域的维护开销是很划算的

  • G1程序运行时的额外执行负载 (Overload)都要比CMS要高。

    譬如它们都使用到写屏障,CMS用写后屏障来更新维护卡表;而G1除了使用写后屏障来进行 同样的(由于G1的卡表结构复杂,其实是更烦琐的)卡表维护操作外,为了实现原始快照搜索 (SATB)算法,还需要使用写前屏障来跟踪并发时的指针变化情况。

    相比起增量更新算法,原始快照 搜索能够减少并发标记和重新标记阶段的消耗,避免CMS那样在最终标记阶段停顿时间过长的缺点, 但是在用户程序运行过程中确实会产生由跟踪引用变化带来的额外负担。由于G1对写屏障的复杂操作 要比CMS消耗更多的运算资源,所以CMS的写屏障实现是直接的同步操作,而G1就不得不将其实现 为类似于消息队列的结构,把写前屏障和写后屏障中要做的事情都放到队列里,然后再异步处理。

-XX:MaxGCPauseMillis=100 设置期望GC最大停顿时间,单位毫秒,默认200ms,这是个软目标,JVM将尽可能(但不保证)停顿小于这个目标。

-XX:G1ReservePercent=n 设置作为空闲的预留内存百分比,以降低目标空间溢出的风险,默认10%

整体上采用标记整理算法,局部采用标记复制算法

参数-XX:+UseConcMarkSweepGC来开启CMS收集器的话,用户会收到一个警告信息,提示CMS未 来将会被废弃:

目前在小内存应用上CMS的表现大概率仍然要会优于G1,而在大内存应用上G1则大多能发挥其 优势,这个优劣势的Java堆容量平衡点通常在6GB至8GB之间,当然,以上这些也仅是经验之谈,不 同应用需要量体裁衣地实际测试才能得出最合适的结论

8.关于垃圾收集器的总结

1.如果两个GC是默认的搭配组合,没必要全写上,写一个即可

2.如果两个GC没有组合关系,一起使用,会报错

  • 单CPU或小内存,单机程序

  • 多CPU,需要最大的吞吐量,如:后台计算型应用

  • 多CPU,追求低停顿时间,需要快速响应如互联网应用

  • 多CPU,大内存,追求停顿时间可控

}

脑筋急转弯,是指当思维遇到特殊的阻碍时,要很快的离开习惯的思路,从别的方面来思考问题。以下是人见人爱的小编分享的套路深的脑筋急转弯大全及答案(9篇),如果能帮助到您,小编的一切努力都是值得的。

爆笑的脑筋急转弯 篇一

2、整天整天在大街上逛悠并且特爱“管闲事”的家伙是谁?

3、为什么离婚的人越来越多?

答案:因为结婚的越来越多

4、如果不辛得了狂犬病,你第一件事要做什么?

5、我常带着我的狗去晨跑,累得我和它都满头大汗,为什么?

答案:你见过狗满头大汗吗

6、为什么有人说:世界上分配得最公平的东西是“良心”?

答案:你说过有人说自己没有良心了吗

7、你知道一个人的小腿应该有多长?

答案:应该长到碰着地面

8、你有一艘船,船上有十五位船员,六十位乘客,三百吨货物。你能根据上面的提示,算出船主的年龄吗

答案:你就是船主年龄还需要算吗?

9、小王在市区租了一间房子,租约上注明若不慎引起火灾,烧毁了房子,必须赔偿三百万元。小王不但不反对,甚至还主动多填了一个零,为什么?

10、你在一年半的时间都不会说话,这段时间你在干什么?

11、小胖在从图书馆回家的计程车上睡着了。突然他一觉醒来,发现前座的司机先生不见了,而车子却仍然在往前进,为什么?

答案:车子执锚了, 司机正在后面推车。

12、有一种活动能够准确无误地告诉你:美人不是天生长出来的,而是七嘴八舌说出来的,这是什么活动?

13、你怎么区分东南西北?

14、在什么样的情况之下,手推车前有人推,后有人拉,但还是会向前进?

15、有三个小朋友在猜拳,,一个出剪刀,一个出石头,一个出布,请问三个人共有几根指头?

16、可以天天躺在枕头上工作一辈子的是什么?

17、晶晶一下子就破了跳高记录,是怎么做到的呢?

答案:她从杆子底下走过去的

18、当你捏住你的鼻子是,你会看不到什么呢?

答案:当然是你自己的鼻子

19、有一样的东西能托起五十公斤的橡木,却容不下五十公斤的沙,你知道是什么吗?

20、书呆子买了一本书,第二天他妈妈却发现书在脸盆里,为什么?

答案:他认为那本书太枯燥了

21、塑料袋里有六个橘子,如何均分给三个小孩,而塑料袋里仍有二个橘子?(不可以分开橘子)

答案:当然是一个人两个桔子,只是一个连塑料袋 一起给他。

22、王大婶有三个儿子,这三个儿子又各有一个姐姐和妹妹,请问王大婶共有几个孩子?

23、神偷“妙手空空”把附近一些有钱人家的金银珠宝偷得一干二净,为什么唯独一家既无防盗设备,也无保全人员的财主没受到光顾?

24、有一个家伙上身穿着棉袄,下身穿着短裤,左手拿着冰可乐,右手端着热咖啡,每天坐在火炉旁,却又开着冷气,请问他到底是什么人?

25、为什么老李喜欢和自己的老婆和孩子一起打麻将?

答案:只有这样才能回收一部分薪水

26、爸爸要小明背论语,他一分钟就背了整本书,难道小明是天才吗?

答案:不因为他只背了论语。

27、老古家遭小偷,损失惨重,但当警方通知破案是,老古却送慰问品去看那名窃贼,为什么?

答案:他想请教如何在半夜回家而不把老婆吵醒的秘 法

28、明明是放砂糖的罐子,却贴着一张写着“盐”的标签,你知道作用何在?

29、戒烟为什么要戒两次呢?

答案:戒了右手还是戒左手

30、常把手伸向别人包里的人,为什么却不是小偷?

高难度的脑筋急转弯 篇二

1、 有一个人一年才上一天班又不怕被解雇他是谁? 答案:圣诞老人

2、 9个橙分给13个小朋友,怎么分才公平 答案:榨成汁

3、 拿着鸡蛋扔石头,为什么鸡蛋没有破? 答案:拿着的是鸡蛋 而扔出去的是石头

4、 小明的妈妈有三个儿子,大独生子叫大明,二儿子叫二明,三儿子叫什么? 答案:当然叫小明

5、 如果你有一只下金蛋的母鸡,你该怎么办? 【 答案:不要再做梦了 】

6、 哪儿的海不产鱼? 【 答案:辞海 】

7、 迄今为止,你所见到的最大的影子是什么? 【 答案:黑夜,哪是地球的影子 】

8、 有一块天然的黑色的大理石,在九月七号这一天,把它扔到钱塘江里会有什么现象发生?【 答案:沉到江底 】

9、 冰变成水最快的方法是什么? 【 答案:去掉冰字哪二点 】

10、 小王是一名优秀士兵,一天他在站岗值勤时,明明看到有敌人悄悄向他摸过来,为什么他却睁一只眼闭一只眼? 【 答案:因为他正在瞄准 】

11、 有一个人,他是你父母生的,但他却不是你的兄弟姐妹,他是谁? 【 答案:你自己 】

12、 什么东西天气越热,它爬的越高?【 答案:漫度计 】

13、 什么东西在倒立之后会增加一半? 【 答案:数目字 】

14、 为什么人们要到市场上去? 【 答案:因为市场不能来 】

15、 为什么青蛙可以跳得比树高? 【 答案:树不会跳 】

16、 纸上写着某一份命令。但是,看懂此文字的人,却绝对不能宣读命令。那么,纸上写的是什么呢?【 答案:级上写着,不要念出此文 】

17、 一架空调器从楼掉下来会变成啥器? 【 答案:凶器 】

18、 为什么现代人越来越言而无信? 【 答案:打电话当然比写信方便 】

19、 蝌蚪没有尾巴,成了青蛙。如果猴子没有尾巴,是甚么?【 答案:仍是猴子 】

20、 谁的脑子记住的东西最多?【 答案:电脑 】

高智商的脑筋急转弯 篇三

1、山中无老虎(打二中药名)——答案:当归,猴头

2、白天头上挂,黑夜在脚下,挂在头上眼睛亮,挂在脚下眼睛瞎。(打一物)——答案:太阳

3、最金贵的话(打一成语)——答案:金玉良言

4、人间天上(打一字)——答案:仝

5、高音(打一常用词)——答案:强调

6、弓开如满月(打一常用词)——答案:紧张

7、健康美(打一常用词)——答案:壮丽

8、聘师(打一常用词)——答案:求教

9、从河南到湖南(打一成语)——答案:难上加难

10、似在却非在,去土换小孩。(打一字)——答案:存

11、两个兄弟一般长,同出同进总成双。酸甜苦辣它先尝,只爱吃菜不喝汤。(打一生活物)——答案:筷子

12、孩(打一成语)——答案:一时半刻

13、像外不是外,多了一长带。(打一字)——答案:处

14、号称全真教(打一成语)——答案:名不虚传

15、女人拉着马,人人都爱她,养我恩情大,会说先喊她。(打一字)——答案:妈

16、一道一道又一道,上短下长中间小;父母有个独生子,一家几口他代表。(打一字)——答案:三

17、明天日全食(打一字)——答案:月

18、十字路口要当心(打一称谓)——答案:交通警察

19、上下都不对(打一称谓)——答案:中校

20、万里沙场望不尽(打一称谓)——答案:作战处长

21、人心不古(打一礼貌用语)——答案:新正如意

22、一曲阳春送友人(打俗语四字)——答案:别唱高调

23、一着不慎,满盘皆输。(打俗语六字)——答案:这下子全完了

24、有目共睹(打俗语三字)——答案:参加者

25、泪珠和笔墨齐下(打一古籍名)——答案:楚辞集注

26、立此永远存照(打一鲁迅篇目)——答案:长命灯

27、鲁迅题字(打一古代著作)——答案:周书

28、吕雉传·卷帘格(打一古代著作)——答案:后汉书

29、九十一·秋千格(打一唐朝人名)——答案:拾得

30、约见于珠峰(打杜甫诗一句)——答案:会当凌绝顶

31、分米(打一常用词)——答案:粉碎

32、风停浪静(打一常用词)——答案:水平

33、富商(打一常用词)——答案:殷殷

34、上尉是故交(打一称谓)——答案:校友

35、身怀六甲仍劳动(打一称谓)——答案:体育干事

36、万木欣欣向荣(打一称谓)——答案:林业处处长

37、八十八,家家有它。(打一字)——答案:米

38、方正一个口,十字中间分四口,农村处处有。(打一字)——答案:田

39、大口装小口,装了往家走。(打一字)——答案:回

40、咱们工人有力量(打一字)——答案:功

有趣的脑筋急转弯 篇四

1、 一把11厘米长的尺子,可否只刻3个整数刻度,即可用于量出1到11厘米之间的任何整数厘米长的物品长度?如果可以,问应刻哪几个刻度?答案:可以刻度可位于2,7,8处。

2、 考试做判断题,小花掷骰子决定答案,但题目有20题,为什么他却扔了40次?答案:他要验证一遍

3、 一个挂钟敲六下要30秒,敲12下要几秒?答案:66秒

4、 什么时候4-3=5?答案:算错时

5、 王大婶有三个儿子,这三个儿子又各有一个姐姐和妹妹,请问王大婶共有几个孩子?答案:五个

7、 小强数学只差6分就及格,小明数学也只差6分就及格了,但小明和小强的分数不一样,为什么?答案:一个是54分,一个是0分

8、 一口井7米深,有只蜗牛从井底往上爬,白天爬3米,晚上往下坠2米。问蜗牛几天能从井里爬出来?答案:5天

9、 某人花19快钱买了个玩具,20快钱卖出去。他觉得不划算,又花21快钱买进,22快钱卖出去。请问它赚了多少钱?答案:2元

10、 100个包子,100个人吃,1个大人吃3个,3个小孩吃1个,多少个大人和多少小孩刚好能吃完?答案:25个大人,75个小孩

11、 小王去网吧开会员卡,开卡要20元,小王没找到零钱,就给了网管一张50的,网管找回30元给小王后,小王找到20元零的,给网管20元后,网管把先前的50元还给了他,请问谁亏了?答案:网管亏了30元

12、 每隔1分钟放1炮,10分钟共放多少炮?答案:11炮

13、 一个数去掉首位是13,去掉末位是40.请问这个数是几?答案:四十三

14、 1根2米长的绳子将1只小狗拴在树干上,小狗虽贪婪地看着地上离它2.1米远的l根骨头,却够不着,请问,小狗该用什么方法来抓骨头呢?答案:转过身用后腿抓

15、 烟鬼甲每天抽50支烟,烟鬼乙每天抽10支烟。5年后,烟鬼乙抽的烟比烟鬼甲抽的还多,为什么?答案:烟鬼甲抽得太多了早死了

16、 一个数若去掉前面的第一个数字是11,去掉最后一个数字为50,原数是多少?答案:五十一

17、 有一种细菌,经过1分钟,分裂成2个,再过1分钟,又发生分裂,变成4个。这样,把一个细菌放在瓶子里到充满为止,用了1个小时。如果一开始时,将2个这种细菌放入瓶子里,那么,到充满瓶子需要多长时间?答案:59分钟

18、 往一个篮子里放鸡蛋,假定篮子里的鸡蛋数目每分钟增加1倍,这样,12分钟后,篮子满了。那么,请问在什么时候是半篮子鸡蛋?答案:11分钟

19、 3个人3天用3桶水,9个人9天用几桶水?答案:9捅

20、 三个孩子吃三个饼要用3分钟,九十个孩子九十个饼要用多少时间?答案:三分钟

21、 猴子每分钟能掰一个玉米,在果园里,一只猴子5分钟能掰几个玉米?答案:一个也没有掰到

22、 一个苹果减去一个苹果,猜一个字。答案:0

23、 从一写到一万,你会用多少时间?答案:最多5秒,10000

24、 怎样使用最简单的方法使X+I=IX等式成立?答案:1+X

25、 买一双高级女皮鞋要214元5角6分钱,请问买一只要多少钱?答案:一只不卖

26、 有三个小朋友在猜拳,一个出剪刀,一个出石头,一个出布,请问三个人共有几根指头答案:六十

27、 浪费掉人的一生的三分之一时间的会是什么东西?答案:床

28、 有二个空房间,一间房间有三盏灯,另一个房间有三个开关,每一个开关只能打开一盏灯,如果你只可以进每个房间一次,那你要如何知道那个开关控制哪盏灯?答案:将一个开关打开五分钟,再开另一个开关,到另一房间。

29、 有100个捧球队比赛,选冠军,最少要赛多少场?答案:要赛99场

30、 用三个3组成一个最大的数?答案:3的33次方。

简单易猜脑筋急转弯 篇五

1、 面部大面积烧伤(打一成语)——答案:焦头烂额

2、 扣(打一成语)——答案:各执一端

3、 糖果广告(打一成语)——答案:甜言蜜语

4、 小的全来了(打一成语)——答案:无微不至

5、 一个(打一成语)——答案:不上不下

6、 希望都来批评(打一成语)——答案:求全责备

7、 太阳出山又落山(打一成语)——答案:东奔西走

8、 五句话(打一成语)——答案:三言两语

9、 虎头(打一成语)——答案:处心积虑

10、 一输即恼(打一成语)——答案:不胜其烦

11、 出庭辩护(打一成语)——答案:现身说法

12、 年底归家(打一成语)——答案:满载而归

13、 生的伟大,死的光荣。(打一成语)——答案:善始善终

14、 千(打一成语)——答案:张口结舌

15、 吓坏守门妖(打一成语)——答案:大惊小怪

16、 哑巴亏(打一成语)——答案:不白之冤

17、 阎罗王(打一成语)——答案:鬼头鬼脑

18、 牵牛话七夕(打一成语)——答案:花言巧语

19、 关公战李逵(打一成语)——答案:大刀阔斧

20、 木偶戏(打一成语)——答案:装腔作势

1、 你姨夫的姐姐的堂弟的表哥的爸爸是你的什么人?答案: 亲戚

2、 白冰冰与关公生的双胞胎叫什么名字?答案: 粉红派对

3、 老王去年因为骂警察是猪而被罚款一万五千元,为什么今年又骂警察是猪,却被罚了三万元?答案: 因为猪肉涨价了

4、 开船的人是水手,唱歌的人是歌手,那么有钱人是?答案: 宝贵手

5、 一个桥载重公斤,为什么一个重公斤的人可以拿两个各重公斤的球过桥?答案: 颠球走

6、 醉鬼是什么人?答案: 宣布自己没醉的人

7、 怎样让鸭子不会飞走?答案: 插一翅膀给它(插翅难飞)

8、 自动捐血和被吸血鬼吸血有什么不同?答案: 吸血鬼不会一边吸血一边招待你喝牛奶吃饼干

9、 歹徒抢劫mtv店,朝店主开了一枪,店主情急之下抽出一卷影带挡,居然平安无事,为什么?答案: 歹徒拿得是水枪

10、 如果有人向你问路,你最怕听到哪一句话?答案: 这里是地球吗?

11、 你看不到房间里唯一的苹果。为什么?答案: 苹果放在头上

12、 一岁的小毛不小心吞下了一枚元的硬币,爸爸紧张的将他倒提起来往背上一拉,可是小毛吐出来的却是一枚元硬币,这时该怎么办?答案: 继续喂他吃一元的硬币

13、 阿美在事业并没有什么成就,为什么也有女强人的外号?答案: 因为她常常强人所难

14、 晶晶洗澡时,每次都有从洗澡水里拿东西往嘴里塞的习惯,而且奇怪的是,她还不断称赞好吃。请问她在吃什么?答案: 澡和枣同音

15、 老明有个儿子大儿子叫大哥二儿子叫二哥,请问小儿子叫什么?答案: 小明

16、 大人上班迟到的理由是堵车,小孩子迟到的理由是什么?答案: 妈妈睡过了头

17、 大龙家今晚的电视为什么只有图像,没有声音?答案: 上演的是哑剧

18、 为什么老王家的马能吃掉老张家的象?答案: 因为他们正在下象棋

19、 早餐时,大妹吵着要吃蒸蛋,小妹则说要吃煎蛋,妈妈出来打圆场,说了一句话,却让大妹直说妈妈偏心,请问妈妈说了什么?答案: 不要争了

20、 小龙的爸爸看到小龙书包里塞满了钞票,却视若无睹,为什么?答案: 那是儿童玩具

套路深的脑筋急转弯 篇七

1、 为什么一匹大青马掉进饭碗里淹死了?--答案:一只蛐蛐的昵称

2、 抓到什么贼后可以马上处死刑?--答案:乌贼

3、 一只毛毛虫(八只脚)走上一堆牛粪,下地以后却发现只有六只脚印,为什么?--答案:牛粪很臭,两只脚捏住鼻子了

4、 大雁为什么向南飞?--答案:以为走的太慢了,就飞啊

5、 有一座桥只能乘重公斤,一个人重公斤,他要带两个分别重公斤的球过桥,没借用任何东西就从桥上把两个球带了过去,他是怎么过去?--答案:抛起一个球,待它要落下的时候把另一个抛起。平时吃晚饭都是爸爸洗碗,可今天爸爸为什么吃完饭却不洗碗?--答案:今天在饭馆里吃的饭有一只毛毛虫要过河,前面没有桥,问它是怎么过去的--答案:变成蝴蝶飞过去

6、 什么动物你打死了它,却流了你的血?--答案:蚊子[page]

7、 一根生锈的绣花针,在月日时分秒,浩月当空之时,扔到云南饵海中将会发生什么反应?--答案:掉到海底

8、 什么筋伤了不能贴膏药?--答案:伤脑筋。

9、 奇妙的关系在斜坡上,有两个人推车。迎面走过来一个人,问前面的那个人:“后边的那个人是你的儿子吗?”那个人说:“是!”他又问后面的那个人:“前面的那个人是你的爸爸吗?”他却说:“不是!”请问这是什么关系?--答案:母子关系

10、 打破了什么人人都叫好?--答案:世界纪录

11、 一个人掉到海里,为什么他的头发没有湿?--答案:因为他是光头

12、 一头小猪卖元,为什么两头小猪却可以卖几万元人民币?--答案:因为长了两个头的小猪实在罕见。

13、 一个人,一只船,一只狗,一只兔子,一棵白菜,这个人要把这三样东西,运到河那边,先送那两个?--答案:先送狗和白菜

14、 什么人最喜欢别人叫他滚--答案:监狱里的人

15、 用什么拖地最干净?--答案:用力

16、 为什么爱斯基摩人是住在北极的人呢答案:因为他们是爱死寂寞的人

17、 超人和女超人做完俯地挺身后,地上各有一个洞及二个洞,是怎么回事?答案:超人用单手女超人用双手

18、 何时是离婚的日子?答案:月日(自由日)

19、 为什么一架纸飞机,造价一亿台币?答案:那是用一张一亿台币的纸票折的

20、 什么时候黄信介只能选择统一,不能独立?答案:买鲜奶的时候

21、 枕前双泪流(打一字)答案:淋

22、 无心恋爱上山路(打一字)答案:峦

23、 多情自古伤离别(打一成语)答案:不欢而散

24、 念念不忘心已碎,二人几时能相会,牛郎进入织女寺,口稳力大刀相对,但愿从此心相通,情人偶尔相依偎。(打六字)答案:今天特别想你

25、 二人一直在一起(打一字)答案:丛

26、 关公骑马走单行,人尔相依两不离,数千数万从我起,几棵树木不成林,文字里面我,阴曹地府我为王。(打六字)答案:送你一朵玫瑰

27、 一个男人加一个女人会成了什么?答案:两个人

28、 金太太一向心直口快,可什么事竟让她突然变得吞吞吐吐了呢?答案:金太太在吃甘蔗的时候吞吞吐吐

29、 有一种药,你想吃上药店却买不到,这是什么药?答案:后悔药

30、 有人经常从十米高的地方不带任何安全装置跳下,为什么?答案:高台跳水

31、 什么雨可以淋死人?答案:枪林弹雨

32、 为什么大家都喜欢坐着看电影?答案:因为站着看脚会酸

33、 废除早自习会造成什么影响?答案:少睡半小时

34、 请龟兔赛跑,请猪来当裁判,请问龟兔谁会赢?答案:不能说!说的人是猪…

35、 上完厕所,要用左手还是右手擦屁屁会比较好?答案:用卫生纸比较好

36、 参加联考时,除了准考证之外,最重要的是什么?答案:记得起床

37、 弟兄七八个,围着柱子坐,只要一分开,衣服就扯破。答案:蒜

38、 独木造高楼,没瓦没砖头,人在水下走,水在人上流。答案:雨伞

39、 身穿大皮袄,野草吃个饱,过了严冬天,献出一身毛。答案:绵羊

40、 一个小姑娘,生在水中央,身穿粉红衫,坐在绿船上。答案:荷花

脑筋急转弯带答案 篇八

1、 越猜越不对头(打一成语)——答案:想入非非

2、 全会(打一成语)——答案:无所不能

3、 弯腰接电话(打一成语)——答案:俯首帖耳

4、 听写(打一成语)——答案:有闻必录

5、 千年松树,五月芭蕉。(打一成语)——答案:粗枝大叶

6、 战场(打一成语)——答案:用武之地

7、 放大镜(打一成语)——答案:显而易见

8、 月光底下看影子(打一成语)——答案:顾影自怜

9、 短处经常说(打一成语)——答案:不足挂齿

10、 一枝红杏出墙来(打一成语)——答案:漏泄春光

-6岁儿童脑筋急转弯 篇九

1、 什么情况一山可容二虎?--答案:一公一母

2、 什么时候时钟会响下?--答案:该修理的时候

3、 一位服装模特儿小姐,即使在平日也穿着未经发表的新款服饰,但她常常看到穿着和她完全相同服饰的人。这是为什么?--答案:她自己照镜子了

4、 火柴盒内只剩一根火柴棒。A先生想点亮煤油灯,使煤炉起火,并烧热水的话,应该先点何物较佳?--答案:火柴或者打火机

5、 至少要多少时间才能读完清华大学?--答案:一秒钟

6、 什么人是不用电的?--答案:缅甸人

7、 开什么车最省油?--答案:开夜车

8、 小王用捕鼠笼在家抓老鼠,第二天一早发现笼子里抓了一只活老鼠,而笼子外面却有二只死老鼠四脚朝天的死老鼠,为什么?--答案:看见同伴被捉笑死了

9、 哪两种蔬菜有手机?——答案:萝卜青菜,各有所爱。

10、 比细菌还小的东西是什么?--答案:细菌的孩子

11、 有一天老张去集市买小鸡,转了半天买了只公鸡只母鸡,回家的路上,不知道想了什么赶紧又跑到集市上买了只公鸡只母鸡为什么?--答案:喂小米啊

12、 什么样的钉子最可怕?--答案:眼中钉。

13、 杰克跑的最快,为什么他的长官还要批评他。--答案:逃跑

14、 穷人和富人在什么地方没有区别?--答案:浴室

15、 小芬对小芳说:“后天的大前天的后天,也就是昨天的昨天的大后天是我的生日,请来参加我的生日会。”小芳应该什么时候赴约呢?--答案:是明天赴约。

16、 一个人,他感觉地球在站转动,为什么?--答案:他喝醉酒了。

17、 从前有三个人,一个是罗锅,一个是摇头,一个是瘸腿,有一天,他们三个过一座桥,这个不让罗锅。摇头。瘸腿,这三个人的病不许过,你帮他们想个办法让他们过去。--答案:罗锅先放一个蛐蛐,然后罗锅说蛐蛐,摇头就在那要头说:“哪呢?哪呢?”最后,瘸腿说:“这呢?这呢?”

18、 什么人喜欢天天下雨--答案:制造雨伞商

19、 哪座桥不能开车也不能走人?--答案:郑板桥

20、 有人说“吃鱼可避免患近视眼”,为什么?--答案:你看过猫戴眼镜吗?

21、 一双鞋卖元,一只鞋卖多少钱?--答案:不卖。

22、 哈巴狗去掉尾巴最像什么动物?睡觉前要做什么事?--答案:哈巴狗,闭上眼睛

23、 小华的爷爷有个儿子,每一个儿子又各有一个妹妹,请问:小华的爷爷有多少个儿女?--答案:个,女儿是最小的。

24、 地上掉了一张元的和一张元的钞票,你看见了会捡哪一张?--答案:两张都捡

25、 将军为什么不用出城作战?--答案:在下象棋。

26、 世界上谁的头力气?--答案:火车头

27、 什么东西最能让人满足?--答案:袜子

28、 动物园里有一只可爱的熊猫,为什么人们都不敢接进它--答案:油漆未干

29、 青蛙和狗比赛游泳,为什么狗赢了?--答案:因为它们比赛的是狗刨式游泳。

30、 天最顶上是什么?--答案:是“一”

31、 奶牛天天挤奶,它还有奶这是为什么?--答案:喂草呗

32、 什么狗身上湿淋淋的?--答案:落水狗。

33、 能使竹篮提水不一场空的办法是什么?--答案:提冰唦。

34、 两个口是吕,三个口是品,那也四个口五个口分别是什么字?--答案:田吾

35、 小明放学回家对妈妈说:“家里有一个地方,我想坐就坐,而你却不能坐”你知道这是什么地方?--答案:妈妈的膝盖上

36、 一个人有一个,全国亿人只有个,这东西是?--答案:生肖

37、 乌龟梦见自己中了一百元大奖,醒来梦想成真,它接下去该怎么办?--答案:再睡一觉

38、 一个商人破产了,有半数朋友不认识他了,为什么?--答案:因为还有一半朋友不知道他破产了。

39、 动物园里大象的鼻子最长,那谁是第二个长的呢?--答案:小象

40、 最坚固的锁,最怕什么?--答案:钥匙

41、 有一个小圆孔的直径只有厘米,而一种体积达立方米的物体却能顺利通过这个小孔,那么它是什么物体呢?--答案:--答案:是水,你才到了吗?

42、 小明从六楼向下跳,为什么还没有受伤?--答案:他转身向房间里跳的。

43、 上课时,老师问同学:“没有人类及动物居住的地球是什么呢?”小名很快便答对了。你知道他的--答案:是什么吗?--答案:地球仪

44、 什么地方盛产安哥拉兔毛?--答案:安哥拉兔身上

45、 为什么金鱼看上去老是傻乎乎的?--答案:它脑袋里灌水了。

46、 一个老爷爷要过桥,前面是狼,后面是虎,老爷爷该怎么办?--答案:晕过去

47、 你爷爷的儿子的爸爸的妈妈的姑姑的小姨的叔叔的大伯跟你是什么关系?--答案:亲戚!

48、 一个长方体盒子,有个角,条边,请问这个长方体盒子从中剪切开,还剩几个角,几条边?--答案:还有个角,条边!

49、 读一年级的东东没有学过外文,为什么也会写外国字?--答案:他写的是阿拉伯数字。

50、 是黑鸡厉害还是白鸡厉害?--答案:黑鸡。因为黑鸡会下白蛋,白鸡不会下黑蛋!

51、 为什么老师一看到小宝就知道他爸爸是左撇子?--答案:因为他的右脸上有五道痕。

52、 你打死了一个动物,为什么流的是自己的血。--答案:因为打死了一只正在吸自己血的蚊子

53、 有一个东西,你能用左手拿,不能用右手拿,这东西是什么。--答案:自己的右手

54、 螳螂请蜈蚣和壁虎到家中做客,烧菜的时候发现酱油没了饿,蜈蚣自告奋勇出去买,却久久未回,究竟发生了什么事?--答案:打开门后,发现蜈蚣还坐在门口穿鞋

55、 什么人从来不洗头发?--答案:和尚

56、 一只狗和一只青蛙比赛游泳平常都是青蛙游的快,为什么在一次比赛中狗赢了?--答案:因为当时的比赛规则是之许用狗刨,不许用蛙泳!

57、 小伟的书包里藏着一个鸭蛋,他为什么不肯拿出来交给妈妈做菜?--答案:那是考卷上的“大鸭蛋

58、 人死了为什么要闭眼睛?--答案:因为睁着眼睛会吓死人的!

59、 黑手党为什么喜欢戴白手套?--答案:因为手太黑。

60、 国歌一共有几个字--答案:两个

61、 一块天然的黑色大理石,在一月一日扔入太平洋,会发生什敏么?--答案:大理石沉入太平洋

62、 有只小蚂蚁,每只小蚂蚁都说它身后还有只小蚂蚁,为什么?--答案:有只小蚂蚁在说谎

63、 什么牛不吃草?--答案:蜗牛

64、 老师说我们的身体里有块骨头,可是,小明说他身体里有块骨头,这是为什么?--答案:因为小明不小心吃下一块鱼骨头。

65、 什么书既没有作者,也没人能读懂?--答案:当然是天书啦!

66、 一个人一年中哪一天睡觉时间最长?--答案:一年中的最后一天,因为他跨越到第二年。

67、 树上“qi”个猴,地下“yi”个猴,一共几个猴?--答案:两个猴。

68、 自找苦吃的地方是哪儿?--答案:药房

69、 一间牢房关了两个犯人,其中一个因偷窃要关一年,另一个是强盗杀人犯却只关两个星期,为什么?--答案:强盗杀人犯被拉出去枪毙啦

70、 你怎样才能把你的左手全部放入你身上右边的裤袋内,而同时又把你的右手全部放入左边的裤袋内?--答案:把裤子前后反着穿

}

我要回帖

更多关于 7的1次方加到7的n次方 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信