版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
20/24多线程并行分代收集算法第一部分并行分代收集算法概述 2第二部分分代收集与并发标记 4第三部分标记清除阶段优化 6第四部分拖延指针更新 9第五部分轻量级标记队列 11第六部分根对象复制 14第七部分并发可达性分析 16第八部分算法的应用和评估 20
第一部分并行分代收集算法概述并行分代收集算法概述
多线程并行分代收集算法是垃圾回收算法的一种,它利用多个线程并行工作来提高垃圾回收的效率。该算法将堆内存划分为多个代,每个代具有不同的垃圾回收策略。
算法流程
并行分代收集算法主要包括以下步骤:
1.并行标记:所有线程并行遍历堆中所有活动对象,标记它们可到达。
2.并行复制:年轻代中的存活对象被复制到另一个年轻代。由于年轻代中的大部分对象都是垃圾,因此复制过程非常高效。
3.并行标记并清除:老年代中的存活对象被标记,而垃圾对象被清除。这个过程比年轻代的复制过程要慢。
4.并行压缩:老年代中存活的对象被压缩到堆的末尾,以减少碎片。
代划分
多线程并行分代收集算法通常将堆划分为三个代:
1.年轻代:包含最近分配的大多数对象。年轻代的垃圾回收频率较高。
2.老年代:包含使用时间较长的对象。老年代的垃圾回收频率较低。
3.长期存活代:包含存活时间非常长的对象。长期存活代的垃圾回收频率最低。
线程分配
并行分代收集算法通过以下方式分配线程:
1.标记线程:用于标记活动对象。
2.复制线程:用于复制年轻代中的存活对象。
3.清除线程:用于清除老年代中的垃圾对象。
4.压缩线程:用于压缩老年代中存活的对象。
优点
并行分代收集算法具有以下优点:
1.高吞吐量:由于多个线程并行工作,因此垃圾回收的吞吐量很高。
2.低暂停时间:由于年轻代的垃圾回收非常快,因此垃圾回收的暂停时间很短。
3.可扩展性:该算法可以随着处理器的增加而扩展,以提高性能。
缺点
并行分代收集算法也有一些缺点:
1.复杂性:该算法的实现非常复杂,因为它需要协调多个线程。
2.碎片:在老年代中可能会产生碎片,因为活动对象被压缩到堆的末尾。
3.内存开销:该算法需要额外的内存来存储标记位和辅助数据结构。
应用
并行分代收集算法广泛应用于以下领域:
1.Java虚拟机
2.Microsoft.NETFramework
3.OracleJVM第二部分分代收集与并发标记关键词关键要点分代收集
1.将堆划分为不同年龄代,年轻代和老年代,以优化内存回收策略。
2.根据对象的存活时间将对象分配到不同的代中,年轻代中对象存活时间较短,老年代中对象存活时间较长。
3.年轻代采用复制收集算法,效率高,但空间占用较大;老年代采用标记清除算法,效率较低,但空间占用较小。
并发标记
1.在垃圾回收过程中,标记存活对象的过程与其他应用程序并发执行,避免了整个应用程序的暂停。
2.使用三色标记法,将对象标记为白色(未标记)、灰色(部分标记)和黑色(完全标记)。
3.使用全局安全点机制,在应用程序执行时暂停所有线程进行短暂的标记更新,以确保标记的一致性。分代收集与并发标记
多线程并行分代收集算法是一种高效的垃圾收集算法,它利用分代假说对对象进行分类并分阶段处理。其中,分代收集和并发标记是算法的关键组件:
分代收集
分代收集基于以下假说:大多数对象在创建后不久就会被释放,而存活下来的对象往往具有较长的生命周期。因此,算法将堆划分为不同的分代,每个分代都有不同的策略和收集频率。
*年轻代:包含最近创建的对象,具有高死亡率。年轻代通常使用复制或标记-清除算法进行收集。
*年老代:包含从年轻代晋升或直接创建的、具有较长生命周期的对象。年老代通常使用标记-清除或标记-整理算法进行收集。
*永久代:包含应用程序加载的类和元数据。永久代通常使用标记-清除算法进行收集。
并发标记
并发标记是一种增量标记技术,它允许垃圾收集器在应用程序运行时并发地执行。与传统的“停止世界”标记不同,并发标记不会暂停应用程序执行,从而最大限度地减少了停顿时间。
并发标记主要包括三个阶段:
*初始标记:应用程序启动时,垃圾收集器对根对象(例如全局变量和栈中的对象)进行标记。
*并发标记:垃圾收集器创建一组并发标记线程,这些线程遍历对象图,标记所有可达对象。应用程序线程也可以并行执行,但它们不能修改对象引用或创建新的根对象。
*清除:标记阶段完成后,垃圾收集器会识别并释放那些未被标记为可达的对象。这个阶段可以与标记阶段并行执行或在标记阶段完成后执行。
分代收集和并发标记的优点
分代收集和并发标记相结合,提供了以下优点:
*低停顿时间:并发标记消除了传统的“停止世界”标记,从而极大地减少了停顿时间。
*可扩展性:多线程并行分代收集算法可以利用多核处理器,提高垃圾收集吞吐量。
*高效性:分代假说允许算法针对不同类型对象优化收集策略,提高整体效率。
*低内存开销:并发标记使用增量标记,减少了对额外内存的需求。
分代收集和并发标记的局限性
分代收集和并发标记也有一些局限性:
*准确性:并发标记可能导致标记结果不完全准确,因为应用程序线程可以修改对象引用。
*复杂性:多线程并行分代收集算法的实现可能很复杂,需要仔细协调应用程序线程和垃圾收集器线程。
*适用性:并发标记可能不适用于所有应用程序,特别是那些具有高度并发性和对象的频繁创建和销毁的应用程序。
结论
分代收集和并发标记是多线程并行分代收集算法的关键组件。它们通过针对不同类型对象优化收集策略和避免“停止世界”标记,实现了低停顿时间、可扩展性和高效率。然而,在实施和使用这些技术时,也需要考虑它们的局限性和适用性。第三部分标记清除阶段优化关键词关键要点增量更新
1.使用写屏障机制,记录对年轻代对象的引用更改。
2.增量更新老年代的引用计数,减少标记清除阶段的扫描范围。
3.利用活跃性分析技术,识别不活跃对象并限制其在标记清除阶段的扫描。
并发标记
1.并发标记线程与主应用程序同时运行,不影响应用程序性能。
2.使用tri-color标记策略,避免死锁和竞争条件。
3.采用增量式标记策略,将大对象标记任务细分为多个小任务。
并发清除
1.主应用程序可以与清除线程并发执行,无需暂停。
2.使用引用计数技术,跟踪对象引用关系,以确定哪些对象可以安全回收。
3.采用无锁清除策略,提高并行性。
内存屏障优化
1.使用引用屏障机制,确保在读写操作之间插入内存屏障。
2.优化内存屏障指令序列,减少开销。
3.利用硬件支持的事务性内存技术,简化内存屏障操作。
逃逸分析优化
1.通过静态分析,识别在年轻代之外存活的对象,并将其分配到老年代。
2.使用逃逸指针分析技术,检测对象引用是否超出其创建范围。
3.采用栈上分配和逃逸分析相结合的策略,优化对象分配。
适应性算法
1.根据应用程序的行为和内存利用情况,动态调整算法参数。
2.使用自适应对象分配策略,优化年轻代和老年代的大小。
3.采用自适应标记清除频率,根据内存使用情况调整标记和清除操作的频率。标记清除阶段优化
标记清除阶段是多线程并行分代收集算法的核心步骤,旨在清除不可达对象并回收相应的内存空间。为了提高标记清除阶段的效率,采用了一系列优化技术:
1.多线程并行标记
利用多处理器系统中多个处理器,将标记任务分配给不同的线程并行执行。每个线程负责标记一个特定范围的对象,从而大幅缩短标记时间。
2.并发标记指针
引入了并发标记指针的概念,允许多个线程同时对同一个对象进行标记。这消除了传统串行标记中需要串行写入标记位的瓶颈,提高了标记效率。
3.可中断标记
为了避免标记线程被过长的对象引用链阻塞,启用了可中断标记机制。当标记线程遇到一个过长的引用链时,它会暂停当前的标记任务,转而标记其他对象。一旦其他对象的标记完成,标记线程会恢复中断的标记任务,继续标记剩余的引用链。
4.并发清除
在传统标记清除算法中,清除不可达对象是单线程执行的。为了提高清除效率,并行分代收集算法引入了并发清除机制。多个线程并行执行清除任务,显著缩短了清除时间。
5.精确清除
与传统的保守清除算法不同,并行分代收集算法采用了精确清除技术。精确清除器确保只释放真正不可达的对象,避免了不必要地释放可达对象。这种精确清除技术提高了内存利用率,减少了垃圾回收开销。
6.增量清除
为了避免清除阶段占用过多的处理器时间,并行分代收集算法采用了增量清除技术。增量清除器将清除任务分解为较小的块,并在后台逐步执行这些块。这种增量清除机制使清除阶段对应用程序性能的影响最小化。
7.重定位可达对象
标记清除阶段完成后,可达对象需要被重定位到一块连续的内存区域中。为了优化重定位过程,并行分代收集算法引入了重定位可达对象技术。该技术允许可达对象在标记阶段就被重定位,从而避免清除阶段额外的重定位开销。
这些优化技术的结合,极大地提高了并行分代收集算法标记清除阶段的效率,从而减少了垃圾回收开销,提升了应用程序的整体性能。第四部分拖延指针更新关键词关键要点【拖延指针更新主题名称】:
1.拖延指针更新是多线程并行分代收集算法中的一种优化技术,该技术允许线程在短时间内推迟更新指向年轻代对象的指针,从而减少锁争用。
2.拖延指针更新通过创建一个复制表,将年轻代对象指针的更新从主线程分离出来。在这个复制表中,每个线程维护自己的指向年轻代对象的指针副本。
3.当线程需要更新指向年轻代对象的指针时,它首先在自己的复制表中进行更新。只有当需要对年轻代执行收集时,主线程才会将复制表中的更新应用到主表中。
【增量更新主题名称】:
拖延指针更新
概念
拖延指针更新是一种并发分代收集算法中使用的优化技术,它允许在进行垃圾收集(GC)时避免不必要的指针更新。该技术的基本思想是将指针更新推迟到发生写操作时,而不是在GC过程中立即执行。
原理
传统的分代收集算法会在GC过程中暂停应用程序线程,并对所有可达对象进行遍历。在此过程中,算法会更新每个可达对象的指针,以指向新的地址。
然而,如果在GC期间没有对可达对象进行修改,则这些指针更新是多余的。拖延指针更新技术利用了这一观察,并仅在发生写操作时才更新指针。
实现
拖延指针更新技术可以通过使用称为读屏障的机制来实现。读屏障是一个插入到应用程序代码中的छोटा成模块,当应用程序线程读取一个尚未更新其指针的可达对象时,该模块将立即更新该指针。
触发机制
拖延指针更新触发机制通常依赖于硬件支持,例如写屏障或加载屏障。写屏障在对可达对象进行写操作时触发,而加载屏障在读取尚未更新其指针的可达对象时触发。
优点
拖延指针更新的主要优点是提高了GC性能。通过避免对未修改对象的指针进行不必要的更新,可以减少GC的暂停时间,从而提高应用程序的吞吐量和响应时间。
缺点
拖延指针更新也存在一些缺点:
*增加内存开销:读屏障和写屏障需要额外的内存开销。
*复杂性:拖延指针更新的实现可能非常复杂,并且可能引入错误。
*兼容性问题:拖延指针更新技术可能与某些硬件或软件平台不兼容。
结论
拖延指针更新是一种并发分代收集算法中使用的优化技术,可通过避免不必要的指针更新来提高GC性能。尽管存在一些缺点,但拖延指针更新已成为现代垃圾收集器中普遍采用的技术,因为它可以显著提高应用程序的性能和可伸缩性。第五部分轻量级标记队列关键词关键要点轻量级标记队列(LMM)
1.LMM是CMS收集器中使用的一种数据结构,用于跟踪和维护需要扫描的对象。
2.与传统的标记队列相比,LMM是一种轻量级的实现,它通过利用对象指针中的标记位来避免显式维护标记状态。
3.LMM在并发阶段以非阻塞的方式进行,这有助于减少停顿时间并提高并行扫描的效率。
并发标记
1.并发标记是CMS收集器在并发阶段执行的主要任务。
2.LMM使并发标记能够在不停止应用程序线程的情况下进行,从而最大限度地减少对应用程序性能的影响。
3.标记期间,应用程序线程可以继续访问和修改对象,这需要一个可增长的并发标记队列来处理不断变化的对象图。
指针追逐
1.指针追逐是并发标记过程的核心步骤,涉及在对象图中沿着指针遍历和标记对象。
2.LMM通过使用指针中的标记位优化指针追逐,避免额外的内存访问和原子更新。
3.高效的指针追逐算法对于最大限度地提高并发标记的吞吐量至关重要。
增量更新
1.由于应用程序线程在并发标记期间可以修改对象图,因此需要对LMM进行增量更新。
2.CMS收集器使用了一种称为“写入屏障”的技术,当应用程序线程写入指针时,它将更新LMM并防止并发标记遗漏或重复扫描对象。
3.增量更新确保了LMM反映对象图的最新状态,从而保证了并发标记的准确性和健壮性。
可靠性
1.LMM在维护对象图的标记状态方面起着至关重要的作用,因此其可靠性对于CMS收集器的正确操作至关重要。
2.CMS收集器使用各种技术来确保LMM的完整性,包括校验和和定期一致性检查。
3.可靠的LMM有助于防止数据损坏或应用程序故障,从而增强了CMS收集器的整体稳定性。
优化
1.为了提高LMM的性能和效率,CMS收集器采用了各种优化技术。
2.这些优化包括使用自适应队列大小、调整指针追逐算法以及针对不同硬件平台进行定制。
3.持续的优化努力有助于CMS收集器在各种工作负载下实现最佳性能。轻量级标记队列
轻量级标记队列(LMMQ)是多线程并行分代收集算法中用于跟踪和管理活跃对象的轻量级数据结构。它是一种无锁队列,用于记录需要标记的对象,同时允许并发的标记线程对队列进行处理。
设计
LMMQ基于单向链表的环形队列结构。它由以下部分组成:
*队列头:指向队列中第一个元素的指针。
*队列尾:指向队列中最后一个元素的指针。
*元素:包含要标记对象的引用和状态信息的结构。
操作
队列支持以下原子操作:
*入队(push):将新元素添加到队列尾。
*出队(pop):从队列头移除元素,返回对其引用的访问权限。
*修改元素状态:更新队列中元素的状态,反映标记的进度。
并发处理
LMMQ旨在支持并发的标记线程。它使用非阻塞算法,允许多个线程同时从队列中出队元素进行标记,而无需任何同步机制。
实现
LMMQ通常通过使用比较并交换(CAS)指令来实现。CAS指令允许线程在原子操作中检查和更新共享变量的值。
性能优势
LMMQ具有以下性能优势:
*高吞吐量:它支持高并发的标记线程,从而提高整体标记吞吐量。
*低开销:它是一种轻量级数据结构,内存占用量小,无需额外线程或同步机制。
*无锁:基于CAS的实现无需任何锁或其他同步机制,从而避免了争用和性能下降。
局限性
虽然LMMQ是一种高效的标记队列,但它也有一些局限性:
*自旋:出队操作可能会导致线程自旋,因为队列可能为空或正在处理中的元素已经出队。
*内存开销:队列中的每个元素都可能包含对对象的引用,这可能会导致额外的内存开销。
*维护成本:队列的维护可能比较复杂,需要特殊的代码处理边界情况。
应用
LMMQ广泛应用于多线程并行分代收集算法中,例如AzulSystems的C4算法和Oracle的G1算法。它还用于其他需要高效并发队列的环境,例如消息传递系统和并行编程框架。第六部分根对象复制关键词关键要点【根对象复制】:
1.复制过程中不中断应用:根对象复制技术通过创建根对象的副本来实现,不会中断应用程序执行,避免了传统垃圾回收技术带来的停顿现象。
2.空间利用率高:复制过程中只会复制被引用的根对象,减少了内存开销,提高了空间利用率。
3.并行分代收集:根对象复制适用于并行分代收集,不同代之间的复制操作可以并行执行,提高了垃圾收集效率。
【分代复制】:
根对象复制
根对象复制是多线程并行分代收集算法中至关重要的一个阶段,旨在复制存活的根对象,并更新指向它们的引用,以确保这些对象在下次垃圾回收周期中仍然可以访问。
概述
在分代收集算法中,根对象是指从根集(例如程序栈或寄存器)可以直接访问的对象。根对象复制的过程包括两个主要步骤:
1.扫描根集:此步骤遍历根集,识别存活的根对象。
2.复制根对象:将存活的根对象复制到新的新生代内存区域。
目的
根对象复制的目的有三方面:
1.隔离新生代中的存活对象:将存活的根对象复制到新生代可以防止它们在标记阶段被错误地回收。
2.构建从空间图:根对象复制过程创建了一个从空间图,记录了新复制的根对象和它们引用的对象之间的关系。
3.更新指针:对根对象的引用将更新为指向新复制的对象,从而确保应用程序继续可以访问这些对象。
过程
根对象复制过程通常涉及以下步骤:
1.准备根集:首先,收集根集并将其复制到一个临时区域。
2.遍历根集:使用并发标记器遍历根集,识别并标记存活的根对象。
3.复制存活的对象:将标记为存活的根对象复制到新生代的新内存区域。
4.记录引用:在复制过程中,记录新的根对象和它们引用的对象之间的关系。
5.更新指针:更新指向根对象的指针,使其指向新复制的对象。
6.完成复制:当所有根对象都复制完毕后,释放临时区域。
并发性
在多线程并行收集算法中,根对象复制通常采用并发方式进行。多个线程同时执行根对象复制,从而提高了收集的吞吐量。
优化
为了提高根对象复制的效率,可以使用以下优化技术:
*增量复制:仅复制自上次收集以来发生更改的根对象。
*并行复制:使用多个线程并行执行根对象复制。
*批量复制:将多个根对象分组到一个批次中,然后再复制它们。
*空闲时复制:在应用程序空闲时执行根对象复制,以最小化对性能的影响。
总结
根对象复制是在多线程并行分代收集算法中至关重要的一个阶段。它通过复制存活的根对象并更新指向它们的引用,确保这些对象在下次垃圾回收周期中仍然可以访问。根对象复制通常采用并发方式进行,并可以使用各种优化技术来提高其效率。第七部分并发可达性分析关键词关键要点并发可达性分析概述
1.并发可达性分析是并行分代收集算法的关键步骤,用于确定哪些对象仍然被应用程序线程引用。
2.它是在并行标记阶段进行的,试图从根对象出发,遍历整个对象图,识别所有可达对象。
3.并发执行和可达性分析的集成需要额外的机制,如并发屏障和标记堆栈,以协调线程之间的访问和避免竞争。
并发屏障
1.并发屏障是用于同步并行标记线程的机制,确保所有线程在可达性分析开始前处于一致的状态。
2.线程在执行屏障之前必须完成其部分的工作,例如标记特定范围的对象。
3.屏障启用对共享数据的原子访问,防止写入操作与并发读取冲突,从而确保可达性分析的正确性。
标记堆栈
1.标记堆栈是并行标记阶段使用的堆栈数据结构,用于跟踪正在遍历和标记的对象。
2.线程从堆栈中获取对象进行标记,在标记完成后将处理过对象压回到堆栈中。
3.标记堆栈提供了一种可扩展且高效的方法来管理和更新可达性信息,使线程可以同时探索不同的部分对象图。
弱可达性
1.弱可达性是并发可达性分析的一个变体,允许对象在特定条件下存活,即使它们没有直接可达。
2.假如对象存在外部引用,如文件描述符或网络连接,则可能需要将该对象视为弱可达。
3.弱可达性分析提供了一种在不损害正确性的情况下提高收集效率的方法,因为它允许从堆中删除不再直接可达但仍保持活动状态的对象。
并发标记算法
1.并发标记算法是实现并发可达性分析的核心,它定义了线程如何并行执行可达性分析。
2.有不同的并发标记算法,如Cheney-Harper、三色标记和标记-清除。
3.选择适当的并发标记算法对于优化性能和可扩展性至关重要,因为它决定了线程之间的工作分配和同步策略。
并发收集器设计的新趋势
1.并发可达性分析的最新趋势集中在提高并行性、可扩展性和内存效率。
2.研究探索多线程标记、事务内存和硬件加速技术。
3.优化并发收集器对应用程序性能的影响至关重要,特别是对于低延迟和高吞吐量系统。并发可达性分析
并发可达性分析是多线程并行分代收集算法的关键组成部分,用于识别和标记在多线程环境中可达的对象。其目标是快速高效地确定哪些对象仍然被活动线程引用,从而避免意外垃圾回收。
概述
并发可达性分析在垃圾收集周期中进行,通常分为两个阶段:
*根集遍历:从根对象(例如线程栈和全局变量)开始,深度优先遍历可达对象。
*并发标记:执行多线程并行标记,每个线程扫描其分配的对象并标记可达对象。
根集遍历
根集遍历是可达性分析的初始步骤,其中根对象被识别并添加到可达集合中。可以采用各种方法来识别根对象,例如:
*从线程栈和全局变量查找引用
*使用根集扫描器库
*使用运行时系统协助
并发标记
并发标记是并行分代收集算法的关键区别特征。在这个阶段,算法利用多个线程同时扫描对象图,以提高标记效率。具体过程如下:
*分配标记队列:每个线程被分配一个标记队列,用于存储需要标记的对象引用。
*并行标记:线程从其标记队列中获取对象,并为该对象设置标记。
*免费列表维护:当对象被标记为可达时,它将从自由列表中删除。
*循环检测:为了防止循环标记,算法使用引用计数或染色机制来跟踪每个对象的标记状态。
*障碍同步:为了确保所有线程完成标记并同步其状态,算法使用障碍机制。
并发可达性分析的挑战
并发可达性分析在多线程环境中面临着独特的挑战:
*并发访问:多个线程可能同时访问同一对象,导致竞态条件。
*对象逃逸:线程可能创建对象并将其传递给其他线程,导致对象的根集不可见。
*瞬态引用:引用可能在两个标记操作之间创建和销毁,导致丢失对象。
解决并发可达性分析的挑战
这些挑战可以通过以下技术得到解决:
*原子操作:使用原子操作来更新共享数据结构(如标记队列和自由列表)。
*锁:在标记操作期间锁定对象,以防止并发访问。
*延迟删除:而不是立即删除可达对象,将其推迟到稍后的垃圾收集周期。
*年轻代逃逸对象:将逃逸对象移动到年轻代,以便在后续收集器运行期间对其执行额外的可达性检查。
并发可达性分析的优点
并发可达性分析具有以下优点:
*提高效率:通过并行化标记过程,显着提高了垃圾收集的吞吐量。
*降低应用程序暂停时间:并行化减少了应用程序的暂停时间,从而提高了响应能力。
*可扩展性:算法可以利用多个处理器或内核来进一步提高性能。
总结
并发可达性分析是一种至关重要的技术,用于在多线程并行分代收集算法中识别可达对象。通过克服并发访问、对象逃逸和瞬态引用的挑战,算法能够高效且可靠地执行垃圾收集,从而提高应用程序性能和稳定性。第八部分算法的应用和评估关键词关键要点并行标记和扫描
1.使用多个线程并行执行标记和扫描阶段,减少垃圾回收时间。
2.通过细粒度锁或无锁数据结构来实现并发,提高吞吐量。
3.优化线程调度和负载均衡,确保线程高效协作。
分代集合
1.将对象划分为不同的代,如年轻代和老年代,根据其存活时间进行分类。
2.对不同代对象采用不同的垃圾回收策略,如年轻代频繁收集,老年代较少收集。
3.减少对存活时间较长的对象的垃圾回收开销,提高整体性能。
增量式并发标记
1.将标记阶段分为多个增量式步骤,并在应用程序运行时并行执行。
2.交替执行应用程序执行和标记阶段,避免长时间暂停。
3.允许应用程序继续执行,同时后台进行垃圾回收,提高应用程序响应能力。
并行压缩整理
1.使用多个线程并行整理和压缩回收后的内存空间。
2.优化内存分配和释放策略,减少内存碎片化并提高内存利用率。
3.避免应用程序执行与压缩整理阶段的冲突,确保稳定性和性能。
性能评估
1.使用基准测试和性能分析工具评估算法的效率和吞吐量。
2.比较不同线程数配置、数据模型和运行环境下的性能表现。
3.根据评估结果优化算法参数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中医养生基础知识
- (2024)文化旅游区建设项目可行性研究报告申请报告(一)
- 2022-2023学年天津市培杰中学高三(上)期末语文试卷
- 《社会工作的访谈法》课件
- 2023年水分保持剂项目筹资方案
- 2023年镉、铋相关常用有色金属项目筹资方案
- 【CPA金投赏】2025播客营销白皮书
- 工业机器人技术与应用模拟练习题含答案
- 养老院老人生活娱乐活动组织服务质量管理制度
- 22 伟大的悲剧 教案初中语文课件
- 杨亮高考英语词汇
- 羽毛球比赛对阵表秩序册
- 北极求生团队游戏课件
- GB∕T 22459.5-2022 耐火泥浆 第5部分:粒度分布(筛分析)试验方法
- 高二地理(人教版)《自然环境的地域差异性(第一课时)》【教案匹配版】 课件
- DB37-T 4253-2020 地热资源勘查技术规程
- 《李凭箜篌引》优质课件
- 诸暨中学提前招生选拔考试数学试卷含答案
- 我的家乡作品临沂课件
- 1二年级上册小学生经典诵读校本课程教材
- 某公司-手机品质管理方法
评论
0/150
提交评论