精华内容
下载资源
问答
  • 应用磷灰石裂变径迹定年技术研究鄂尔多斯盆地南缘渭北隆起抬升期次及演化过程。...始新世—渐新世以来的断块敲倾作用阶段,与秦岭造山带始新世以来的快速隆升,以及渭河盆地新生代的快速断陷作用有关。
  • 鄂尔多斯盆地东南缘大宁-吉县地区煤层气资源丰富,对该区成煤后中新生代构造及其演化的认识,有利于煤层气勘探与开发的有效开展。基于区域构造演化特征,运用构造地质学的研究方法,对该区勘查资料和野外节理测量数据...
  • 从火山活动至沉积建造的多旋回特点出发,系统论述了冀西北地区中新生代盆地的成生与演化发展,对不同时期盆地的特征进行了分析总结。①区内中生代的构造变动以断裂和局部升降、局部褶皱为主,形成了一系列断陷盆地和...
  • 滇西中新生代锡矿带属于中新特提斯成矿带的组成部分,位于海陆壳俯冲带陆壳仰冲一侧,与造山花岗岩带密切相关。根据中新生代板块活动的主要事件,可分为四个成矿期。由东往西锡矿化世代依次变新,与板块活动事件逐次...
  • 中国西部中新生代大型大陆扩张盆也相当发育,可分为内陆扩张盆地和弧后扩张盆地。这两种盆地的形成和演化与相邻大洋板块俯冲机制密切相关。晚二叠世以来,中国发生过三次与大洋板块俯冲相关的陆块碰撞和一次显著的板...
  • 城市化进程中新生代农民工定居城市意愿影响因素分析,汪杭,张敬华,本文选取2000-2010年新生代农民工流入量作为研究样本,实证研究了城市化进程中一些主要因素对新生代农民工定居城市意愿的影响。结果
  • 川东南地区受多期构造运动影响,形成了复杂...结果表明,川东南构造带于中新生代以来主要经历了4期构造运动:早白垩世E-W向挤压作用;晚白垩世近S-N向挤压作用;早新生代NE-SW向挤压作用;上新世早期NW-SE向挤压作用。
  • 中国及邻区中新生代大型大陆扩张盆地的特点和性质取决于距离相邻相关大洋的位置。从陆内到中新生代特提斯洋岸和北西太平洋岸,分别发育了陆内、陆缘和边缘盆地,各有3个系列,羽状对称排列,越近洋岸,活动性越强,...
  • 在对东北地区佳木斯隆起与周缘中新生代盆地群的野外地质调查和地震剖面综合解释的基础上,结合近年来的研究成果,确定了研究区的盆山耦合关系:在早白垩世发生NW-SE向伸展作用,形成广泛发育呈NE向展布的伸展盆山...
  • 成煤盆地的构造演化主要经历了两期构造沉降和两期构造反转,两期的构造沉降形成了东部地区的成煤盆地,随后发生的两期构造反转对煤系的保存有一定的破坏作用,两方面构造作用的叠加,造就了煤系赋存在一系列孤立的小型...
  • JDK1.8中JVM堆中新生代三部分比例不是8:1:1的问题来源于: 1.JDK1.8中的默认GC UseParallelGC 会自动开启 UseAdaptiveSizePolicy 「自适应大小策略」,会导致自动调整新生代各区域大小; 2.但使用 关闭命令:-XX:-...

    0.结论

    JDK1.8中JVM堆中新生代三部分比例不是8:1:1的问题来源于:
    1.JDK1.8中的默认GC UseParallelGC 会自动开启 UseAdaptiveSizePolicy 「自适应大小策略」,会导致自动调整新生代各区域大小
    2.但使用 关闭命令:-XX:-UseAdaptiveSizePolicy 无法关闭该策略,原因未知;
    3. 如需要看到8:1:1的默认比例方法如下:

    • -XX:SurvivorRatio=8
    • 使用CMS等默认关闭 AdaptiveSizePolicy 的GC算法

    1.起因

    最近研究虚拟机,在学习到运行时数据区中的java堆有这样的疑问
    -XX:SurvivorRatio在缺省的情况下表示新生代Eden区域和Survivor区域(From幸存区或To幸存区)的比例默认为8,即Eden区域与From区域与to区域的比例为8:1:1
    但是实际测试并不是这样的

    2.实际测试

    本人环境:

    java version “1.8.0_251”
    Java™ SE Runtime Environment (build 1.8.0_251-b08)
    Java HotSpot™ 64-Bit Server VM (build 25.251-b08, mixed mode)

    2.1参数为 -Xms300m -Xmx300m 时,比例6:1:1

    在这里插入图片描述
    此时居然6:1:1!查询资料可知与「自适应大小策略」有关,在jdk1.8中,默认的GC为UseParallelGC,该垃圾回收器默认开启了AdaptiveSizePolicy(相关源码 arguments.cpp中的set_parallel_gc_flags 方法

    如果开启了这个参数,则每次 GC 后会重新计算 Eden、From 和 To 区的大小。计算依据是 GC 过程中统计的 GC 时间、吞吐量、内存占用量。

    知道了原因,如何解决呢?

    2.2 参数为-Xms300m -Xmx300m -XX:-UseAdaptiveSizePolicy 时,比例仍为6:1:1

    在这里插入图片描述
    在这里插入图片描述

    开启:-XX:+UseAdaptiveSizePolicy
    关闭:-XX:-UseAdaptiveSizePolicy

    虽然我使用 jinfo 命令确认了显式地关闭了 UseAdaptiveSizePolicy ,但比例仍然对不上,这让我困惑

    2.3参数为-Xms300m -Xmx300m -XX:SurvivorRatio=8 时,比例8:1:1

    在这里插入图片描述
    使用 -XX:SurvivorRatio 指令后发现eden和survivor变成了熟悉缺省比例。
    另外查询资料发现,来源:IBM Knowledge Center

    避免故障
    -XX:SurvivorRatio= option 与 Java 虚拟机参数 -XX:+UseAdaptiveSizePolicy 不相容。 因此请根据您的情况使用其中某一个值。

    -XX:SurvivorRatio = option-XX:+UseAdaptiveSizePolicy 最好别一起用,
    另外在使用 -XX:SurvivorRatio,最好关闭「自适应大小策略」 -XX:-UseAdaptiveSizePolicy。(查询资料中发现有些人需要将前两个命令都设置才能看到8:1:1的效果,可能是JDK版本问题)

    3.其它收获

    1. 为什么 CMS GC 默认关闭 UseAdaptiveSizePolicy ?
      在arguments.cpp 类中的 set_cms_and_parnew_gc_flags 方法,其调用了 disable_adaptive_size_policy 方法将 UseAdaptiveSizePolicy 设置成 false。

    在这里插入图片描述
    具体静态方法的代码
    在这里插入图片描述

    4.参考文章

    1. JVM GC 之「AdaptiveSizePolicy」实战
    2. openjdk-jdk8u的arguments.cpp 源码「Github」
    3. Sun HotSpot JVM tuning parameters (Solaris and HP-UX)「IBM Knowledge Center」
    展开全文
  • 二连盆地中新生代经历了复杂的发育历史,是一个多期叠加的盆地系统,它经历了早侏罗世-中侏罗世-伸展断陷盆地期、晚侏罗世末-区域性构造反转期、早白垩世早中期-强烈断陷盆地期、早白垩世晚期-晚白垩世-盆地南东部抬升...
  • 结果表明,盆地周缘和内部在中新生代都受到后期改造作用,周缘存在挤压逆冲推覆和拉张断陷等不同性质的构造改造作用。在盆地北部,盖层的构造受到了基底断裂的控制,正断层、逆断层和由基底断裂控制的挠曲构造等有...
  • java中新生代和老年代

    千次阅读 2018-06-25 21:26:49
    Old:主要存放应用程序生命周期长的内存对象。 Permanent:是指内存的永久保存区域,主要存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域. 它和和存放Instance的Heap区域不同,GC(Garbage ...

    1.为什么会有年轻代

    我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话,我们把新创建的对象放到某一地方,当GC的时候先把这块存“朝生夕死”对象的区域进行回收,这样就会腾出很大的空间出来。

    摘要: 堆设置 -Xms :初始堆大小 -Xmx :最大堆大小 -XX:NewSize=n :设置年轻代大小 -XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5 -XX:MaxPermSize=n :设置持久代大小 收集器设置 -XX:+UseSerialGC :设置串行收集器 -XX:...


    图1:Java堆中各代分布

    Young:主要是用来存放新生的对象。

    Old:主要存放应用程序中生命周期长的内存对象。

    Permanent:是指内存的永久保存区域,主要存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域. 它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误

    Hotspot的内存划分简单说分为三个部分,Young Generation(年轻代)、Old Generation(年老代)以及Perm Generation(永久代)。其中的Young Generation(年轻代),又分为Eden、From和To,其中From和To又统称为Survivor Spaces(幸存区)。
      正常情况下,一个对象从创建到销毁,应该是从Eden,然后到Survivor Spaces(幸存区),再到Old Generation(年老代),最后在某次GC下消失。
      当然,一个对象也可能直接在Eden里死掉,也可能一直在Old Generation(年老代)存活,这些都是有可能的。
      关于内存划分,可以自己没事用内存分析工具看看,比如jmap、jvisualvm等等,观察一下各个区域的内存变化,结合实际去了解一下。
      关于classloader机制的学习,可以结合tomcat去学习,了解清楚tomcat的classloader机制,看tomcat是如何保证各个APP之间的类隔离的



    展开全文
  • 根据松江地区、鸟取县东部的新生代火山岩类的比较结果,讨论日本中国地区新生代火山岩的岩石成因,认为:火山岩浆在上升过程,在岩浆演化晚期阶段,与围岩发生了同化混染作用,使得最终凝固结晶形成的火山岩化学成分发生...
  • 结合地层和钻井资料分析了断裂活动期次和特征,揭示新生代构造演化经历了3个阶段:晚侏罗世及早白垩世张扭到压扭阶段(燕山运动期);古近纪早期继续压扭抬升、中期张扭、晚期区域挤压抬升阶段(早喜马拉雅运动...
  • -Xms、-Xmx都是1024M,通过...没有配置-Xmn(新生代区大小)。通过网上的文章看新生代区:默认老年区是1:4,但是我这个是83.19:940.81都小于1:10了。求大神解答什么回事,新生代区用的是parNew,老年代区用的是CMS。
  • JVM中新生代,老年代

    2020-12-24 13:45:20
    JVMjava的Heap(堆)是JVM所管理的最大的一块内存空间,主要用于存放各种类的实例对象。由于Java堆是垃圾收集器管理的主要区域,因此也被称为“GC堆”GC分为两种:Minor GC,Full GC(或者称为Major GC)在Java,堆被...

    JVM

    java中的Heap(堆)是JVM所管理的最大的一块内存空间,主要用于存放各种类的实例对象。

    由于Java堆是垃圾收集器管理的主要区域,因此也被称为“GC堆”

    GC分为两种:Minor GC,Full GC(或者称为Major GC)

    在Java中,堆被划分为两个不同的区域:年轻代(Young)、老年代(Tenured)。年轻代又被划分为三个区域:Eden、From Survivor、To Survivor。这样划分的目的是为了使JVM能够更好的管理堆内存中的对象,包括内存的分配以及回收。

    堆大小=年轻代+老年代

    年轻代= eden space(新生代) + from survivor +to survivor

    一、年轻代

    1、年轻代用来存放新近创建的对象。大小随堆大小的增大和减小而相应的变化,默认值是保持堆大小的1/15,可以通过-Xmn参数设置年轻代为固定大小,也可以通过-XX:NewRatio来设置年轻代与老年代的大小比例。年轻代的特点是对象更新速度快,在短时间内产生大量的"死亡对象"。

    2、年轻代的特点是产生大量的死亡对象,并且要产生连续可用的空间,所以使用复制清除算法和并行收集器进行垃圾回收,对年轻代的垃圾回收称作初级回收(minor gc)

    3、初级回收将年轻代分为三个区域,一个新生代(eden),两个复活代(survivor),应用程序只能使用一个新生代和复活代。当发生初级垃圾回收的时候,gc挂起程序,然后将新生代和复活代中的存活对象复制到另一个非活动的复活代中,然后一次性清除新生代和复活代。将原来的非活动复活代标记成为活动复活代。将在指定次数回收后仍然存活的对象移动到老年代中。初级回收后,得到一个空的可用的新生代

    4、新生代几乎是所有Java对象出生的地方,即Java对象申请的内存以及存放都是在这个地方。Java中的大部分对象不需要长久存活,具有朝生夕灭的性质。当一个对象被判定为"死亡"的时候,GC就有责任来回收掉这部分对象的内存空间。新生代是GC收集垃圾的频繁区域。当对象在eden区出生后,在经过一次Minor GC后,如果对象还存活并且能够被另外一块Survivor区域所容纳。则使用复制算法将这些仍然存活的对象复制到另外一块Survivor区域中,然后清理所使用过的Eden和Survivor区域,并且将这些对象的年龄设置为1,以后对象在Survivor区每熬过一次Minor GC,就将对象的年龄加1,当对象的年龄到达某个值时(默认是15,可以通过参数-XX:MaxTenuringThreshold来设定),这些对象就会成为老年代。但这也不是一定的,对于一些较大的对象(即需要分配一块较大的连续内存空间)则是直接进入到老年代。

    5、JVM每次只会使用Eden和其中的一块Survivor来为对象服务,所以无论什么时候,总有一块Survivor区域是空闲着的。因此,新生代实际可用的内存空间为9/10(即90%)的新生代空间。

    二、老年代

    1、Full GC 是发生在老年代的垃圾收集动作,采用 标记-清除算法

    2、现实的生活中,老年代的人通常会比新生代的人"早死"。堆内存中的老年代不同于这个,老年代的对象几乎个个都是在Survivor区域熬过来的,它们是不会那么容易就"死掉’'的。因此,Full GC发生的次数不会有Minor GC那么频繁,并且进行一次Full GC要比进行一次Minor GC的时间更长。另外,标记-清除算法收集垃圾的时候会产生许多内存碎片(即不连续的内存空间),此后需要为较大的对象分配内存时,若无法找到足够的连续的内存空间,就会提前触发一次GC的收集动作。

    三、永久代

    1、永久代用于存放静态文件,如java类,方法等。永久代对垃圾回收没有显著影响,但是有一些应用可能动态生成或者调用一些class,例如Hibernate等,在这种时候需要设置一个比较大的永久代空间来存放这些运行过程中新增的类。永久代大小通过-XX:MaxPermSize进行设置

    2、在JAVA8中,永久代被彻底移除。取而代之的是另一块内存区域——元空间。 它可以通过-XX:MetaspaceSize和-XX:MaxMetaspaceSize来进行调整,当达到-XX:MetaspaceSize所指定的阈值后就会开始进行清理该区域。

    如果本地空间的内存用尽了会收到java.lang.OutOfMemoryError:Metadata space 的错误信息,和永久代相关的JVM参数-XX:PermSize及-XX:MaxPermSize将会忽略掉。

    参考地址:

    1、https://gblog.sherlocky.com/java-xin-sheng-dai-lao-nian-dai/

    2、https://blog.csdn.net/sted_zxz/article/details/72476673

    3、https://blog.csdn.net/a754112602/article/details/81194373

    展开全文
  • jvm中新生代和老年代的理解

    千次阅读 2017-12-11 14:30:19
    堆用于存储对象实例及数组值,可以认为Java所有通过new...1. 新生代(New Generation)大多数情况下Java程序新建的对象都从新生代分配内存,新生代由Eden Space和两块相同大小的Survivor Space(通常又称为S0和S

    堆用于存储对象实例及数组值,可以认为Java中所有通过new创建的对象的内存都在此分配,Heap中对象所占用的内存由GC进行回收。为了让内存回收更加高效,Sun JDK从1.2开始对堆采用了分代管理的方式。

    1. 新生代(New Generation)

    大多数情况下Java程序中新建的对象都从新生代分配内存,新生代由Eden Space和两块相同大小的Survivor Space(通常又称为S0和S1或From和To)构成,可通过-Xmn参数来指定新生代的大小,也可通过-XX:SurvivorRatio来调整Eden Space及Survivor Space的大小。不同的GC方式会以不同的方式按此值来划分Eden Space和Survivor Space,有些GC方式还会根据运行状况来动态调整Eden、S0、S1的大小。
    2. 老年代(Old Generation或Tenuring Generation)

    用于存放新生代中经过多次垃圾回收仍然存活的对象,例如缓存对象,新建的对象也有可能在老年代上直接分配内存。主要有两种状况(由不同的GC实现来决定):一种为大对象,可通过在启动参数上设置-XX:PretenureSizeThreshold=1024(单位为字节,默认值为0)来代表当对象超过多大时就不在新生代分配,而是直接在老年代分配,此参数在新生代采用Parallel Scavenge GC时无效,Parallel Scavenge GC会根据运行状况决定什么对象直接在老年代上分配内存;另一种为大的数组对象,且数组中无引用外部对象。

    新生代和老生代因为结构划分不一样,其串行收集器算法也不一样
    新生代串行收集器
    采用stop the world策略,步骤大概是:先从eden区扫描,把存活的对象拷贝到to区,如果to区放不下的对象直接拷贝到old区。再从from区扫描存活对象,如果对象存活次数超过阀值的就移到老年区,其他的移到to区。做完之后from和to区概念互换(from和to只是运行时的概念,其实就对应存活1区和存活2区)。
    图形的表示如下:
    回收前:
    这里写图片描述
    回收后:
    这里写图片描述

    老生代串行收集器
    老生代垃圾回收主要分为三个阶段 Mark-sweep-compact
    Mark:识别哪些是存活的
    Sweep: 识别垃圾,并回收
    Compact:滑动活动对象并压缩到连续空间,碎片整理。

    自己做的淘宝和京东优惠券搜索助手,自动回复个人号,欢迎关注体验
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    展开全文
  • JVM中新生代和老年代

    2019-09-19 16:16:50
    Java,堆被分为:新生代(Young)、老年代(Old)。 新生代又被分为:Eden、From Survivor、To Survivor。 新生代:老年代=1:2 ,即新生代(1/3堆空间)、老年代(2/3堆空间) 新生代中:Eden:from:to=8:1:1. ...
  • 所有通过new创建的对象的内存都在堆分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由FromSpace和ToSpace组成。 一般情况将新生代分为...
  • Java新生代、老年代和永久代

    千次阅读 2020-07-21 14:59:00
    1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。...2.年轻代的GC HotSpot JVM把年轻代分为了三部分:1个Ed...
  • java 堆中新生代老年代

    千次阅读 2015-09-17 20:00:09
    现在应该能理解为什么新生代大小非常重要了(译者,有另外一种说法:新生代大小并不重要,影响GC的因素主要是幸存对象的数量),如果新生代过小,会导致新生对象很快就晋升到老年代,在老年代对象很难被回收。...
  • 1.存储在JVM的Java对象可以被划分为两类:一类生命周期很短,这类对象的创建和消亡很快;一类生命周期很长,极端情况下,还能够与JVM的生命周期保持一致。 2.JVM堆区进一步细分为新生代和老年代。 3.年轻代又可以...
  • JVM GC时堆内存中新生代的复制算法

    千次阅读 2017-12-05 16:14:12
    JVM GC过程中新生代的复制算法JVM虚拟机中对内存进行回收主要就是对堆内存的回收,heap区把堆内存分为新生代和旧生代 - 新生代:主要存放新new出来的对象 - 旧生代:在新生代中经过多次回收都没有被回收掉的对象就...
  • 新生代中,每次垃圾收集时都发现大批对象死去,只有少量对象存活,便采用了复制算法,只需要付出少量存活对象的复制成本就可以完成收集。而老年代因为对象存活率高、没有额外空间对它进行分配担保,就必须采用...
  • JVM老年代和新生代的比例

    千次阅读 2021-02-26 09:36:27
    在 Java ,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。这样划分的目的是为了使 JVM 能够更好的管理堆内存的对象,...
  • JVM规范说到:”所有的对象实例以及数组都要在堆上分配”。Java堆是垃圾回收器管理的主要区域,百分之九十九的垃圾回收发生在Java堆,另外百分之一发生在方法区,因此又称之为”GC堆”。根据JVM规范规定的内容,...
  • jvm新生代Eden和survivor区

    万次阅读 多人点赞 2016-08-30 15:27:33
    紧接着进行GC,Eden区所有存活的对象都会被复制到“To”,而在“From”区,仍存活的对象会根据他们的年龄值来决定去向。年龄达到一定值(年龄阈值,可以通过-XX:MaxTenuringThreshold来设置)的对象会被移动到年老...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,425
精华内容 30,570
关键字:

中新生代