




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、apache 服務器 出現(xiàn)內(nèi)存溢出的解決方法 2011-10-08 14:26Tomcat 內(nèi)存溢出的原因在生產(chǎn)環(huán)境中 tomcat 內(nèi)存設置不好很容易出現(xiàn)內(nèi)存溢出。 造成內(nèi)存溢出是不一樣的, 當然處理方式也 不一樣。這里根據(jù)平時遇到的情況和相關資料進行一個總結。常見的一般會有下面三種情況:1.OutOfMemoryError : Java heap space2.OutOfMemoryError : PermGen space3.OutOfMemoryError : unable to create new native thread.Tomcat 內(nèi)存溢出解決方案對于前兩種情況, 在應用本
2、身沒有內(nèi)存泄露的情況下可以用設置 tomcat jvm 參數(shù)來解決。 ( -Xms -Xmx -XX : PermSize -XX : MaxPermSize)最后一種可能需要調整操作系統(tǒng)和tomcat jvm 參數(shù)同時調整才能達到目的。第一種:是堆溢出。原因分析:JVM堆的設置是指java程序運行過程中JVM可以調配使用的內(nèi)存空間的設置 .JVM在啟動的時候會自動設置 Heap size的值,其初始空間(即-Xms)是物理內(nèi)存的1/64,最大空間(-Xmx)是物理內(nèi)存的1/4??梢岳?JVM提供的-Xmn -Xms -Xmx等選項可進行設置。Heap size 的大小是 Young Gen
3、eration 和TenuredGeneraion 之和。在JVM中如果98%的時間是用于GC且可用的Heap size不足2%的時候將拋出此異常信息。Heap Size最大不要超過可用物理內(nèi)存的80%, 一般的要將-Xms和-Xmx選項設置為相同,而-Xmn為1/4的 -Xmx 值。沒有內(nèi)存泄露的情況下,調整-Xms -Xmx 參數(shù)可以解決。-Xms:初始堆大小-Xmx:最大堆大小但堆的大小受下面三方面影響:1. 相關操作系統(tǒng)的數(shù)據(jù)模型(32-bt還是64-bit )限制;(32位系統(tǒng)下,一般限制在1.5G2G;我在2003 server 系統(tǒng)下(物理內(nèi)存:4G和6G, jdk : 1.6)
4、測試1612M, 64位操作系統(tǒng)對內(nèi)存無限制。)2. 系統(tǒng)的可用虛擬內(nèi)存限制;3. 系統(tǒng)的可用物理內(nèi)存限制。堆的大小可以使用 java -Xmx*M version 命令來測試。支持的話會出現(xiàn)jdk 的版本號,不支持會報 錯。-Xms -Xmx 一般配置成一樣比較好比如set JAVA_OPTS= -Xms1024m -Xmx1024m其初始空間(即-Xms)是物理內(nèi)存的1/64 ,最大空間(-Xmx)是物理內(nèi)存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可 進行設置實例,以下給出 1G 內(nèi)存環(huán)境下java jvm 的參數(shù)設置參考:JAVA_OPTS="-serv
5、er -Xms800m -Xmx800m -XX:PermSize=64M -XX: MaxNewSize=256m-XX:MaxPermSize=128m -Djava.awt.headless=true "JAVA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:NewSize=192m -XX: MaxNewSize=384m"CATALINA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -X
6、X:MaxPermSize=256m-XX:NewSize=192m -XX: MaxNewSize=384m”服務器為 1G 內(nèi)存:JAVA_OPTS="-server -Xms800m -Xmx800m-XX:PermSize=64M -XX: MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "服務器為 64 位、2G 內(nèi)存:JAVA_OPTS='-server -Xms1024m -Xmx1536m -XX:PermSize=128M-XX: MaxNewSize=256m -XX:M
7、axPermSize=256m' 解決方案 1 :前提:是執(zhí)行startup.bat 啟動 tomcat 的方式Linux 服務器:在 /usr/local/apache-tomcat-5.5.23/bin 目錄下的 catalina.sh添加: JAVA_OPTS='-Xms512m -Xmx1024m'或者 JAVA_OPTS="-server -Xms800m -Xmx800m -XX: MaxNewSize=256m"或者CATALINA_OPTS="-server -Xms256m -Xmx300m"Windows服務器
8、:在 catalina.bat 最前面加入set JAVA_OPTS=-Xms128m -Xmx350m或者 set CATALINA_OPTS=-Xmx300M -Xms256M(區(qū)別是一個直接設置 jvm內(nèi)存,另一個設置tomcat內(nèi)存,CATALINA_OPT瞅乎可以與JAVA_OPTSF力口區(qū)別的使用)基本參數(shù)說明-client , -server這兩個參數(shù)用于設置虛擬機使用何種運行模式,一定要作為第一個參數(shù), client 模式啟動比較快,但運行時性能和內(nèi)存管理效率不如 server 模式, 通常用于客戶端應用程序。 相反, server 模式啟動比client 慢,但可獲得更高的運
9、行性能。在 windows 上,缺省的虛擬機類型為 client 模式,如果要使用 server 模式,就需要在啟動虛擬機時加-server參數(shù),以獲得更高性能,對服務器端應用,推薦采用server模式,尤其是多個CPU的系統(tǒng)。在Linux, Solaris 上缺省采用 server 模式。此外,在多 cup 下,建議用 server 模式 -Xms<size>設置虛擬機可用內(nèi)存堆的初始大小,缺省單位為字節(jié),該大小為1024的整數(shù)倍并且要大于1MR可用k(K)或m(M)為單位來設置較大的內(nèi)存數(shù)。初始堆大小為2MB加說明是MB否則就是KB了。例如:-Xms6400K, -Xms256
10、M-Xmx<size>設置虛擬機的最大可用大小,缺省單位為字節(jié)。該值必須為1024整數(shù)倍,并且要大于 2MB可用k(K)或m(M)為單位來設置較大的內(nèi)存數(shù)。缺省堆最大值為64MB例如:-Xmx81920K, -Xmx80M當應用程序申請了大內(nèi)存運行時虛擬機拋出 java.lang.OutOfMemoryError: Java heap space 錯誤,就需要使用-Xmx 設置較大的可用內(nèi)存堆。PermSize/MaxPermSize :定義Perm段的尺寸,即永久保存區(qū)域的大小, PermSize為JVM啟動時初始化 Perm 的內(nèi)存大??;MaxPermSize為最大可占用的Pe
11、rm內(nèi)存大小。在用戶生產(chǎn)環(huán)境上一般將這兩個值設為相同, 以減少運行期間系統(tǒng)在內(nèi)存申請上所花的開銷。 如果用 startup.bat 啟動 tomcat,OK 設置生效 . 夠成功的分 配 200M 內(nèi)存 . 解決方案 2: 前提:是執(zhí)行startup.bat 啟動 tomcat 的方式手動設置 Heap size Windows服務器: 修改 TOMCAT_HOME/bin/catalina.bat ,在 “echo "Using CATALINA_BASE: $CATALINA_BASE"上面力口入以 下行: Java 代碼 set JAVA_OPTS=%JAVA_OPT
12、S% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m注:JAVA_OPTS!保留先前設置。Linux 服務器:修改 TOMCAT_HOME/bin/catalina.sh在 “echo "Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行:JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m'注:$JAVA_OPTS!保留先前 設置。 解決方案 3: 前提:是執(zhí)行windows 的系統(tǒng)服務啟動to
13、mcat 的方式但是如果不是執(zhí)行startup.bat 啟動 tomcat 而是利用 windows 的系統(tǒng)服務啟動tomcat 服務 , 上面的設置就不生效了 ,就是說set JAVA_OPTS=-Xms128m -Xmx350m沒起彳用.上面分配200M內(nèi)存就 OOMT.windows 服務執(zhí)行的是bintomcat.exe. 他讀取注冊表中的值, 而不是 catalina.bat 的設置 . 解決辦法 :修改注冊表HKEY_LOCAL_MACHINESOFTWAREApache Software FoundationTomcat ServiceManagerTomcat5Paramete
14、rsJavaOptions 原值為-Dcatalina.home="C:ApacheGroupTomcat 5.0"-Djava.endorsed.dirs="C:ApacheGroupTomcat 5.0commonendorsed"-Xrs加入 -Xms300m -Xmx350m 重起 tomcat 服務 , 設置生效 解決方案 4: 前提:是執(zhí)行windows 的系統(tǒng)服務啟動tomcat 的方式在安裝 tomcat 時若有勾選 "NT Service(NT/2000/XP only)"則安裝完成后在安裝目錄的 "bin
15、" 目錄里會有一個tomcat.exe 的檔案先把 tomcat 的服務停掉在命令列模式下(運行里輸入CMD)將目錄切換到 tomcat 的 bin 目錄 用下面的命令把服務移除tomcat -uninstall "Apache Tomcat 4.1 接下來,寫個批處理。內(nèi)容如下set SERVICENAME=Apache Tomcat 4.1set CATALINA_HOME=E:Tomcat 4.1.24set CLASSPATH=D:j2sdk1.4.1_01libset JAVACLASSPATH=%CLASSPATH%set JAVACLASSPATH=%JAVA
16、CLASSPAT?H%TA; LINA_HOME%binbootstrap.jarset JAVACLASSPATH=%JAVACLASSPAT?H%TA; LINA_HOME%commonlibservlet.jarset JAVACLASSPATH=%JAVACLASSPATH%;%JAVA_HOME%libtools.jartomcat.exe -install "%SERVICENAME%" "%JAVA_HOME%jrebinserverjvm.dll"-Djava.class.path="%JAVACLASSPATH%"
17、-Dcatalina.home=" ? TALINA_HOME%" -Xms512m -Xmx768m -start org.apache.catalina.startup.Bootstrap -params start -stop org.apache.catalina.startup.Bootstrap -params stop -out "? TALINA_HOME%logsstdout.log" -err" ? TALINA_HOME%logsstderr.log"注意,從 tomcat.exe -install 開始的是最后
18、一行!不要手工回車換行把這一行分成了好幾段。保存后在命令行下執(zhí)行這個bat 文件,注意執(zhí)行的時候將“服務”窗口關閉。第二種:永久保存區(qū)域溢出原因分析:PermGen space 的全稱是 Permanent Generation space, 是指內(nèi)存的永久保存區(qū)域,這塊內(nèi)存主要是被 JVM 存放 Class 和 Meta 信息的 ,Class 在被 Loader 時就會被放到 PermGenspace 中, 它和存放類實例(Instance)的 Heap 區(qū)域不同 ,GC(Garbage Collection) 不會在主程序運行期對 PermGen space 進行清理,所以如果你 的應用中
19、有很CLASS勺話,就很可能出現(xiàn)PermGen space錯誤,這種錯誤常見在 web服務器對JSP進彳f pre compile的時候。如果你的 WEBKPP下都用了大量的第三方jar,其大小超過了 jvm默認的大小(4M)那么就會產(chǎn)生此錯誤信息了。 但目前的 hibernate 和 spring 項目中也很容易出現(xiàn)這樣的問題。 可能是由于這些框 架會動態(tài) class ,而且 jvm 的 gc 是不會清理PemGen space 的,超過了jvm 默認的大小 (4M) ,導致內(nèi)存溢出。建議:將相同的第三方jar 文件移置到 tomcat/shared/lib 目錄下,這樣可以達到減少jar
20、文檔重復占用內(nèi)存的目的。這一個一般是加大-XX: PermSize -XX : MaxPermSize 來解決問題。-XX: PermSize 永久保存區(qū)域初始大小-XX: PermSize 永久保存區(qū)域初始最大值這一般結合第一條使用,比如 set JAVA_OPTS= -Xms1024m -Xmx1024m -XX : PermSize=128M -XX :PermSize=256M有一點需要注意: java -Xmx*M version 命令來測試的最大堆內(nèi)存是-Xmx 與 -XX : PermSize 的和比如系統(tǒng)支持最大的 jvm 堆大小事 1.5G ,那 -Xmx1024m -XX
21、: PermSize=768M 是無法運行的。 解決方案 1: Linux 服務器:在 catalina.sh 的第一行增加:JAVA_OPTS=-Xms64m-Xmx256m-XX:PermSize=128M-XX: MaxNewSize=256m-XX:MaxPermSize=256m或者在 “echo "Using CATALINA_BASE:$CATALINA_BASE"上面加入以下行:JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128mWindows服務器:在 catalina.bat 的第一行
22、增加:set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX: MaxNewSize=256m -XX:MaxPermSize=256m 解決方案2: 修改 TOMCAT_HOME/bin/catalina.bat ( Linux 下為 catalina.sh ),在 Java 代碼 “echo "Using CATALINA_BASE: $CATALINA_BASE "上面加入以下行:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=51
23、2m“echo "Usi ngCATALINA_BASE: $CATALINA_BAS E± 面力口入以下行:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512mcatalina.sh 下為: Java 代碼JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m" JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:Max
24、PermSize=512m" 第三種:無法創(chuàng)建新的線程。這種現(xiàn)象比較少見,也比較奇怪,主要是和jvm 與系統(tǒng)內(nèi)存的比例有關。這種怪事是因為JVM已經(jīng)被系統(tǒng)分配了大量的內(nèi)存(比如1.5G),并且它至少要占用可用內(nèi)存的一半。有人發(fā)現(xiàn),在線程個數(shù)很多的情況下,你分配給JVM的內(nèi)存越多,那么,上述錯誤發(fā)生的可能性就越大。原因分析(從這個 blog 中了解到原因:):每一個32位的進程最多可以使用 2G的可用內(nèi)存,因為另外 2G被操作系統(tǒng)保留。這里假設使用1.5G給JVM,那么還余下500M可用內(nèi)存。這500M內(nèi)存中的一部分必須用于系統(tǒng)dll的加載,那么真正剩下的也許只有400M,現(xiàn)在關鍵的地
25、方出現(xiàn)了:當你使用Java創(chuàng)建一個線程,在JVM的內(nèi)存里也會創(chuàng)建一個 Thread 對象,但是同時也會在操作系統(tǒng)里創(chuàng)建一個真正的物理線程(參考JVM規(guī)范),操作系統(tǒng)會在余下的400兆內(nèi)存里創(chuàng)建這個物理線程,而不是在JVM的1500M的內(nèi)存堆里創(chuàng)建。在jdk1.4里頭,默認的棧大小是256KB,但是在jdk1.5里頭,默認的棧大小為 1M每線程,因此,在余下 400M的可用內(nèi)存里邊我們最多也 只能創(chuàng)建 400 個可用線程。這樣結論就出來了,要想創(chuàng)建更多的線程,你必須減少分配給JVM的最大內(nèi)存。還有一種做法是讓JVM宿主在你的 JNI 代碼里邊。給出一個有關能夠創(chuàng)建線程的最大個數(shù)的估算公式:( M
26、axProcessMemory - JVMMemory- ReservedOsMemory) /( ThreadStackSize ) = Numberof threads對于jdk1.5而言,假設操作系統(tǒng)保留120M內(nèi)存:1.5GB JVM:(2GB-1.5Gb-120MB) / (1MB) = 380 threads1.0GB JVM:(2GB-1.0Gb-120MB) / (1MB) = 880 threads在 2000/XP/2003 的 boot.ini 里頭有一個啟動選項,好像是: /PAE /3G ,可以讓用戶進程最大內(nèi)存擴充至3G,這時操作系統(tǒng)只能占用最多1G的虛存。那樣應該
27、可以讓 JVM創(chuàng)建更多的線程。因此這種情況需要結合操作系統(tǒng)進行相關調整。因此:我們需要結合不同情況對 tomcat 內(nèi)存分配進行不同的診斷才能從根本上解決問題。檢測當前JVM內(nèi)存使用情況:System.out.println("JVM MAX MEMORY: " + Runtime.getRuntime().maxMemory()/1024/1024+"M");System.out.println("JVM IS USINGMEMORY:"+ Runtime.getRuntime().totalMemory()/1024/1024+&
28、quot;M");System.out.println("JVM IS FREE MEMORY:" + Runtime.getRuntime().freeMemory()/1024/1024+"M");這三個方法都是說JVM的內(nèi)存使用情況而不是操作系統(tǒng)的內(nèi)存;maxMemory()這個方法返回的是java虛擬機(這個進程)能構從操作系統(tǒng)那里挖到的最大的內(nèi)存,以字節(jié)為單位,如果在運行java 程序的時候,沒有添加-Xmx 參數(shù),那么就是64 兆,也就是說 maxMemory()返回的大約是64*1024*1024 字節(jié),這是java 虛擬機默認情
29、況下能從操作系統(tǒng)那里挖到的最大的內(nèi)存。如果添加了 -Xmx參數(shù),將以這個參數(shù)后面的值為準,例如java-cp ClassPath -Xmx512m ClassName ,那么最大內(nèi)存就是512*1024*0124 字節(jié)。totalMemory() 這個方法返回的是java 虛擬機現(xiàn)在已經(jīng)從操作系統(tǒng)那里挖過來的內(nèi)存大小,也就是java 虛擬機這個進程當時所占用的所有內(nèi)存。如果在運行java 的時候沒有添加-Xms 參數(shù),那么,在java程序運行的過程的,內(nèi)存總是慢慢的從操作系統(tǒng)那里挖的,基本上是用多少挖多少,直挖到 maxMemory() 為止,所以totalMemory()是慢慢增大的。如果用
30、了 -Xms參數(shù),程序在啟動的時候就會無條件的從操作系 統(tǒng)中挖 -Xms 后面定義的內(nèi)存數(shù),然后在這些內(nèi)存用的差不多的時候,再去挖。freeMemory()是什么呢,剛才講到如果在運行java的時候沒有添加-Xms參數(shù),那么,在java程序運行的過程的,內(nèi)存總是慢慢的從操作系統(tǒng)那里挖的,基本上是用多少挖多少,但是java 虛擬機100的情況下是會稍微多挖一點的, 這些挖過來而又沒有用上的內(nèi)存, 實際上就是freeMemory() , 所以 freeMemory()的值一般情況下都是很小的, 但是如果你在運行java 程序的時候使用了 -Xms, 這個時候因為程序在啟動的時候就會無條件的從操作系
31、統(tǒng)中挖-Xms 后面定義的內(nèi)存數(shù),這個時候,挖過來的內(nèi)存可能大部分沒用上,所以這個時候 freeMemory() 可能會有些 解決方案 JVM堆大小的調整Sun HotSpot 1.4.1使用分代收集器,它把堆分為三個主要的域:新域、舊域以及永久域。Jvm生成的所有新對象放在新域中。一旦對象經(jīng)歷了一定數(shù)量的垃圾收集循環(huán)后,便獲得使用期并進入舊域。在永久 域中 jvm 則存儲 class 和 method 對象。就配置而言,永久域是一個獨立域并且不認為是堆的一部分。下面介紹如何控制這些域的大小??墒褂?-Xms和-Xmx控制整個堆的原始大小或最大值。下面的命令是把初始大小設置為128M:java
32、 -Xms128m-Xmx256mj控制新域的大小,可使用 -XX:NewRatio設置新域在堆中所占的比例。下面的命令把整個堆設置成128m,新域比率設置成3,即新域與舊域比例為 1: 3,新域為堆的1/4或32M: java - Xms128m - Xmx128mXX:NewRatio =3可使用-XX:NewSize和-XX: MaxNewsize設置新域的初始值和最大值。下面的命令把新域的初始值和最大值設置成64m:java - Xms256m - Xmx256m - Xmn64m永久域默認大小為4nl運行程序時,jvm會調整永久域的大小以滿足需要。每次調整時,jvm會對堆進行一次完全
33、的垃圾收集。使用 -XX:MaxPerSize 標志來增加永久域搭大小。在WebLogic Server 應用程序加載較多類時,經(jīng)常需要增加永久域的最大值。當 jvm 加載類時,永久域中的對象急劇增加,從而使jvm 不斷調整永久域大小。為了避免調整,可使用 -XX:PerSize 標志設置初始值。下面把永久域初始值設置成32m,最大值設置成64mjava -Xms512m -Xmx512m -Xmn128m -XX:PermSize=32m -XX:MaxPermSize=64m默認狀態(tài)下,HotSpot在新域中使用復制收集器。該域一般分為三個部分。第一部分為Eden,用于生成新的對象。另兩部
34、分稱為救助空間,當 Eden 充滿時,收集器停止應用程序,把所有可到達對象復制到當 前的 from 救助空間,一旦當前的 from 救助空間充滿,收集器則把可到達對象復制到當前的 to 救助空間。 From 和 to 救助空間互換角色。維持活動的對象將在救助空間不斷復制,直到它們獲得使用期并轉入舊域。使用 -XX:SurvivorRatio 可控制新域子空間的大小。同 NewRation 一樣, SurvivorRation 規(guī)定某救助域與Eden 空間的比值。比如,以下命令把新域設置成64m, Eden占32m,每個救助域各占 16mjava -Xms256m -Xmx256m -Xmn64
35、m -XX:SurvivorRation =2如前所述,默認狀態(tài)下 HotSpot 對新域使用復制收集器,對舊域使用標記清除壓縮收集器。在新域中使用復制收集器有很多意義,因為應用程序生成的大部分對象是短壽命的。理想狀態(tài)下,所有過渡對象在移出 Eden 空間時將被收集。如果能夠這樣的話,并且移出 Eden 空間的對象是長壽命的,那么理論上可以立即把它們移進舊域,避免在救助空間反復復制。但是,應用程序不能適合這種理想狀態(tài),因為它們有一小部分中長壽命的對象。最好是保持這些中長壽命的對象并放在新域中,因為復制小部分的對象總比壓縮舊域廉價。為控制新域中對象的復制,可用 -XX:TargetSurvivo
36、rRatio 控制救助空間的比例(該值是設置救助空間的使用比例。如救助空間位1M,該值50表示可用500K)。該值是一個百分比,默認彳!是50。當較大的堆棧使用較低的 sruvivorratio 時,應增加該值到 80 至 90 ,以更好利用救助空間。用-XX:maxtenuring threshold 可控制上限。為放置所有的復制全部發(fā)生以及希望對象從 eden 擴展到舊域,可以把MaxTenuring Threshold 設置成0。 設置完成后, 實際上就不再使用救助空間了, 因此應把 SurvivorRatio 設成最大值以最大化 Eden 空間, 設置如下:java -XX:MaxTe
37、nuringThreshold=0 XX:SurvivorRatio =50000 垃圾回收描述:垃圾回收分多級,0級為全部(Full)的垃圾回收,會回收 OL限中的垃圾;1級或以上為部分垃圾回收,只 會回收Young中的垃圾,內(nèi)存溢出通常發(fā)生于 OLD段或Perm段垃圾回收后,仍然無內(nèi)存空g容納新的Java對象的情況。當一個URL被訪問時,內(nèi)存申請過程如下:A. JVM 會試圖為相關Java 對象在 Eden 中初始化一塊內(nèi)存區(qū)域B. 當 Eden 空間足夠時,內(nèi)存申請結束。否則到下一步C. JVM試圖釋放在Eden中所有不活躍的對象(這屬于1或更高級的垃圾回收);釋放后若Eden空間仍然不足以放入新對象,則試圖將部分 Eden中活躍對象放入Survivor區(qū)/OLD區(qū)D. Survivor區(qū)被用來作為Eden及OLD的中間交換區(qū)域,當 OLD區(qū)空間足夠時,Survivor區(qū)的對象會被移到 Old 區(qū),否則會被保留在Survivor 區(qū)E.當OLD區(qū)空間不夠時,JVM會在OLD區(qū)進行完全的垃圾收集(0級)F.完全垃圾收集后,若
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 停薪留職合同協(xié)議
- 環(huán)境咨詢服務合同
- 淘寶店裝修服務合同
- 養(yǎng)老服務合同發(fā)布
- 建筑工程質量保證和監(jiān)理服務合同
- 南京師范大學中北學院《現(xiàn)代電力生產(chǎn)技術》2023-2024學年第二學期期末試卷
- 棗莊科技職業(yè)學院《體育排舞》2023-2024學年第二學期期末試卷
- 宿州學院《國際經(jīng)濟法(雙語)》2023-2024學年第二學期期末試卷
- 湖南工程學院應用技術學院《現(xiàn)代控制》2023-2024學年第二學期期末試卷
- 3 水里的沙 教學設計-2023-2024學年科學一年級下冊冀人版
- 電化學儲能電站運行維護規(guī)程
- 中華八大菜系-川菜課件
- 說明文試卷(含答案解析)
- 少年英雄(課件)小學生主題班會通用版
- 《會稽山紹興酒營銷策略現(xiàn)狀、問題及對策》開題報告文獻綜述4000字
- 2021年中國高尿酸及痛風趨勢白皮書
- 最全-房屋市政工程安全生產(chǎn)標準化指導圖冊
- 《魅力教師的修煉》讀書心得體會4篇
- 15 分章專項練習-整本書閱讀系列《經(jīng)典常談》名著閱讀與練習
- 幼兒園衛(wèi)生保健人員任命書(保健醫(yī)生)
- 一課一練┃二年級下冊:1古詩二首
評論
0/150
提交評論