成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

android應用內存,安卓內存占用

安卓手機下載軟件總是提示內存不足,怎么辦?

vivo手機提示內存不足處理方法:

專注于為中小企業(yè)提供網站設計制作、成都做網站服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)紫陽免費做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現(xiàn)規(guī)模擴充和轉變。

手機運行內存不足:

1、調出后臺運行軟件,一鍵加速清理后臺;

2、卸載手機中不常用的軟件(軟件的進程、插件等會占用手機運行內存);

3、根據手機配置合理運行軟件,若手機配置較低,盡量不要運行對配置需求較高的大型游戲;

4、進入手機設置--運存與存儲空間--運行內存,開啟內存融合,將RAM和ROM融合擴展,沒有此選項則代表機型不支持。

手機存儲空間不足 :

1、進入i管家--空間清理/空間管理--掃描并清理垃圾文件;

2、卸載手機中不常用的軟件,避免不必要的內存占用;

3、進入文件管理,對手機中的視頻、歌曲、壓縮包等進行清理;

4、 部分支持SD卡的機型,可選擇安裝SD卡,將存儲在手機中的數據移動到SD卡存儲。

手機存儲空間足夠卻提示內存不足 :

1、重啟一下手機,查看是否恢復正常;

2、進入設置--系統(tǒng)管理/更多設置--備份與重置--還原所有設置,該操作會導致登錄的第三方軟件賬號需要重新登錄,但不會清除手機存儲中的照片,視頻等文件,請確認不影響某些第三方軟件的使用后再進行還原所有設置操作。 避免操作出現(xiàn)異常導致數據丟失,建議先備份下手機的重要數據;

3、進入i管家--空間清理/空間管理--掃描并清理垃圾緩存;

4、必要時,請先備份好手機中的重要數據,進入設置--系統(tǒng)管理/更多設置--備份與重置--清除所有數據試試。

Android系統(tǒng)內存管理

部分內容出至林學森的Android內核設計思想。

Android官網內存管理

部分出至

Android本質是Linux所以先從Linux說起。

Linux的內存管理為系統(tǒng)中所有的task提供可靠的內存分配、釋放和保護機制。

核心:

虛擬內存

內存分配與釋放

內存保護

將外存儲器的部分空間作為內存的擴展,如從硬盤劃出4GB大小。

當內存資源不足時,系統(tǒng)按照一定算法自動條形優(yōu)先級低的數據塊,并把他們存儲到硬盤中。

后續(xù)如果需要用到硬盤中的這些數據塊,系統(tǒng)將產生“缺頁”指令,然后把他們交換回內存中。

這些都是由操作系統(tǒng)內核自動完成的,對上層應用”完全透明“。

每個進程的邏輯地址和物理地址都不是直接對應的,任何進程都沒辦法訪問到它管轄范圍外的內存空間——即刻意產生的內存越界與非法訪問,操作系統(tǒng)也會馬上阻止并強行關閉程序,從而有力的保障應用程序和操作系統(tǒng)的安全和穩(wěn)定。

一旦發(fā)現(xiàn)系統(tǒng)的可用內存達到臨界值,機會按照優(yōu)先級順序,匆匆低到高逐步殺掉進程,回收內存。

存儲位置:/proc/PID/oom_score

優(yōu)先級策略:

進程消耗的內存

進程占用的CPU時間

oom_adj(OOM權重)

Android平臺運行的前提是可用內存是浪費的內存。它試圖在任何時候使用所有可用的內存。例如,系統(tǒng)會在APP關閉后將其保存在內存中,以便用戶可以快速切換回它們。出于這個原因,Android設備通常運行時只有很少的空閑內存。在重要系統(tǒng)進程和許多用戶應用程序之間正確分配內存內對存管理是至關重要。

Android有兩種主要的機制來處理低內存的情況:內核交換守護進程(kernel swap daemon)和低內存殺手(low-memory killer)。

當用戶在APP之間切換時,Android會在最近使用的(LRU)緩存中保留不在前臺的APP,即用戶看不到的APP,或運行類似音樂播放的前臺服務。如果用戶稍后返回APP,系統(tǒng)將重用該進程,從而使APP切換更快。

如果你的APP有一個緩存進程,并且它保留了當前不需要的內存,那么即使用戶不使用它,你的APP也會影響系統(tǒng)的整體性能。由于系統(tǒng)內存不足,它會從最近使用最少的進程開始殺死LRU緩存中的進程。該系統(tǒng)還負責處理占用最多內存的進程,并可以終止這些進程以釋放RAM。

當系統(tǒng)開始終止LRU緩存中的進程時,它主要是自底向上工作的。系統(tǒng)還考慮哪些進程消耗更多的內存,從而在終止時為系統(tǒng)提供更多的內存增益。你在LRU列表中消耗的內存越少,你就越有可能留在列表中并能夠快速恢復。

為了滿足RAM的所有需求,Android嘗試共享RAM來跨進程通信。它可以做到以下方式:

Android設備包含三種不同類型的內存:RAM、zRAM和storage。

注意:CPU和GPU都訪問同一個RAM。

內存被拆分成頁。通常每頁有4KB的內存。

頁面被認為是空閑的或已使用的。

空閑頁是未使用的RAM。

已使用頁是系統(tǒng)正在積極使用的RAM,分為以下類別:

干凈的頁面(Clean pages)包含一個文件(或文件的一部分)的一份精確副本存在存儲器上。當一個干凈的頁面不再包含一個精確的文件副本(例如,來自應用程序操作的結果)時,它就變成了臟頁??梢詣h除干凈的頁,因為它們始終可以使用存儲中的數據重新生成;不能刪除臟頁(Dirty pages),否則數據將丟失。

內核跟蹤系統(tǒng)中的所有內存頁。

當確定一個應用程序正在使用多少內存時,系統(tǒng)必須考慮shared pages。APP訪問相同的服務或庫將可能共享內存頁。例如,Google Play Services 和一個游戲APP可能共享一個位置服務。這使得很難確定有多少內存屬于這個服務相對于每個APP。

當操作系統(tǒng)想要知道所有進程使用了多少內存時,PSS非常有用,因為頁面不會被多次計數。PSS需要很長時間來計算,因為系統(tǒng)需要確定哪些頁面是共享的,以及被有多少進程。RSS不區(qū)分共享頁面和非共享頁面(使計算速度更快),更適合于跟蹤內存分配的更改。

內核交換守護進程(kswapd)是Linux內核的一部分,它將使用過的內存轉換為空閑內存。當設備上的空閑內存不足時,守護進程將變?yōu)榛顒訝顟B(tài)。Linux內核保持低和高的可用內存閾值。當空閑內存低于低閾值時,kswapd開始回收內存。當空閑內存達到高閾值,kswapd將停止回收內存。

kswapd可以通過刪除干凈的頁面來回收干凈的頁面,因為它們有存儲器支持并且沒有被修改。如果進程試圖尋址已刪除的干凈頁,則系統(tǒng)會將該頁從存儲器復制到RAM。此操作稱為請求分頁。

kswapd將緩存的私有臟頁(private dirty pages)和匿名臟頁(anonymous dirty pages)移動到zRAM進行壓縮。這樣做可以釋放RAM中的可用內存(空閑頁)。如果進程試圖觸摸zRAM中臟頁,則該頁將被解壓縮并移回RAM。如果與壓縮頁關聯(lián)的進程被終止,則該頁將從zRAM中刪除。

如果可用內存量低于某個閾值,系統(tǒng)將開始終止進程。

lmkd實現(xiàn)源碼要在system/core/lmkd/lmkd.c。

lmkd會創(chuàng)建名為lmkd的socket,節(jié)點位于/dev/socket/lmkd,該socket用于跟上層framework交互。

小結:

LMK_TARGET: AMS.updateConfiguration() 的過程中調用 updateOomLevels() 方法, 分別向/sys/module/lowmemorykiller/parameters目錄下的minfree和adj節(jié)點寫入相應信息;

LMK_PROCPRIO: AMS.applyOomAdjLocked() 的過程中調用 setOomAdj() 向/proc/pid/oom_score_adj寫入oom_score_adj后直接返回;

LMK_PROCREMOVE: AMS.handleAppDiedLocked 或者 AMS.cleanUpApplicationRecordLocked() 的過程,調用remove(),目前不做任何事,直接返回;

為了進一步幫助平衡系統(tǒng)內存并避免終止APP進程,可以Activity類中實現(xiàn)ComponentCallbacks2接口。提供的onTrimMemory()回調方法允許APP在前臺或后臺偵聽與內存相關的事件,然后釋放對象以響應應用程序生命周期或表明系統(tǒng)需要回收內存的系統(tǒng)事件。

onTrimMemory()回調是在Android 4.0(API級別14)中添加的。

對于早期版本,可以使用onLowMemory(),它大致相當于TRIM_MEMORY_COMPLETE事件。

一個專門的驅動。(Linux Kernel 4.12 已移除交給kswapd處理)。

很多時候,kswapd無法為系統(tǒng)釋放足夠的內存。在這種情況下,系統(tǒng)使用onTrimMemory()通知APP內存不足,應該減少其分配。如果這還不夠,內核將開始終止進程以釋放內存,它使用低內存殺手(LMK)來完成這個任務。

為了決定要終止哪個進程,LMK使用一個名為oom_adj_score的“out of memory”分數來確定運行進程的優(yōu)先級,高分的進程首先被終止。

后臺應用程序首先被終止,系統(tǒng)進程最后被終止。

下表列出了從高到低的LMK評分類別。第一排得分最高的項目將首先被殺死:

Android Runtime(ART)和Dalvik虛擬機使用分頁(Paging)和內存映射(mmapping)來管理內存。應用程序通過分配新對象或觸摸已映射頁面來修改內存都將保留在RAM中,并且不能被調出。應用程序釋放內存的唯一方式是垃圾收集器。

安卓手機運行內存很小的軟件為什么占用很大內存?求解決辦法

手機運行整個Android系統(tǒng)需要一定的內存,部分系統(tǒng)程序和第三方程序也會開機自啟動,所以占用了較多的內存,以致于開機后內存占用率比較高。

若是使用vivo手機,建議您時常一鍵加速來清理手機運行內存,并進入i管家--(應用管理/軟件管理)--權限管理--自啟動里面關閉不必要的自啟動軟件。

Android如何統(tǒng)計應用占用內存

要獲取過去三小時內應用內存占用情況統(tǒng)計信息可以使用如下命令:

會輸出應用運行時間百分比,以及PSS(分攤內存大小),USS(獨占內存大小),RSS(常駐內存大?。╩inPSS-avgPSS-maxPSS/minUSS-avgUSS-maxUSS/minRSS-avgRSS-maxRSS over 樣本數)

參考:

如何管理Android手機剩余內存

大家知道要如何管理Android手機剩余內存嗎?管理Android手機剩余內存有什么方法?下面一起來看看!

其實大家不用那么在意android手機剩余內存的大小。

很多人都是把使用其他系統(tǒng)的習慣帶到了android手機上,不是所有的智能手機系統(tǒng)都一樣的。android大多數應用沒有退出的設計其實是有道理的,這和系統(tǒng)對進程的調度機制有關系。如果你知道java,就能更清楚這機制了。其實和java的垃圾回收機制類似,系統(tǒng)有一個規(guī)則來回收內存。進行內存調度有個閥值,只有低于這個值系統(tǒng)才會按一個列表來關閉用戶不需要的東西。當然這個值默認設置得很小,所以你會看到內存老在很少的數值徘徊。但事實上他并不影響速度。相反加快了下次啟動應用的速度。這本來也是android的優(yōu)勢之一,如果人為去關閉進程,沒有太大必要。特別是自動關進程的軟件。

   為什么內存少的時候運行大型程序會慢呢?

其實很簡單,在內存剩余不多時打開大型程序,會觸發(fā)系統(tǒng)自身的調進程調度策略,這是十分消耗系統(tǒng)資源的操作,特別是在一個程序頻繁向系統(tǒng)申請內存的時候。這種情況下系統(tǒng)并不會關閉所有打開的進程,而是選擇性關閉,頻繁的調度自然會拖慢系統(tǒng)。

   進程管理軟件到底還有存在的價值嗎?

其實還是有的,在運行大型程序之前,你可以手動關閉一些進程釋放內存,可以顯著的提高運行速度。但一些小程序,完全可交由系統(tǒng)自己管理。很多朋友還有個疑問,如果不關程序是不是會更耗電?這里也解釋一下,android的應用在被切換到后臺時,它其實已經被暫停了,并不會消耗cpu資源,只保留了運行狀態(tài)。所以為什么有的程序切出去重新進入,還會到主界面。但是,一個程序如果想要在后臺處理些東西,如音樂播放,它就會開啟一個服務,服務可在后臺持續(xù)運行,所以在后臺耗電的也只有帶服務的應用了。這個在進程管理軟件里能看到,名字是service。所以沒有帶服務的應用在后臺是完全不耗電的,沒有必要關閉。這種設計本來就是一個非常好的設計,下次啟動程序時,會更快,因為不需要讀取界面資源,何必要關掉他們抹殺這個android的優(yōu)點呢?

為什么android應用看起來那么耗內存?

大家知道,android上的應用是java,當然需要虛擬機,而android上的應用是帶有獨立虛擬機的,也就是每開一個應用就會打開一個獨立的虛擬機。這樣設計的原因是可以避免虛擬機崩潰導致整個系統(tǒng)崩潰,但代價就是需要更多內存。

至于為什么開了大程序或者開了好幾個程序之后切換會變慢,具體分析如下:

已經開啟了一個大程序,占用70%內存,如果再想運行一個程序,此時還需要50%的內存,則就需要一個從大程序占用的內存中釋放或者壓縮的過程,所以表現(xiàn)出來的就是慢一會兒。

已經開啟了幾個程序共占用內存80%,運行新程序時又需要20%的內存,系統(tǒng)內存因為沒見過剩余0的時候,也就是應該剩一部分空閑內存,那么就需要從之前開啟的這幾個程序中選擇一個或者幾個來關閉,這一過程也需要耗費系統(tǒng)資源,所以會慢一會兒。也就是說你手動去結束程序的時候,就是替系統(tǒng)在釋放內存,就算你不去結束,在需要內存的時候系統(tǒng)也會自動結束程序釋放內存。

不在后臺運行的程序(沒服務的),即使不結束也不會耗電。在后臺運行的(有服務的`)程序,如一些播放器或實時監(jiān)控的軟件,自然會耗電。這就說明結束進程并不是沒用,我們只需要看哪個帶服務耗電哪個程序后臺一直在運行,看服務就能看出來,這樣的軟件如果用不到的時候就結束了吧。

以QQ舉例,正常的退出,會在進程管理里留下qq的運行過的狀態(tài),但不耗電不占 cpu,如果你只是切換出去(按房子鍵而不是退出)那么自然會耗電,因為程序還在運行,QQ還在線呢。

這里就有個要注意的地方了,雖然房子鍵和那個返回鍵都可以將程序切換出去,但是兩者的效果差異是很大的,返回鍵可以視作程序已經退出了,而按房子鍵,則是將程序切換到了后臺來運行,軟件并沒有退出哦!

以上這些設計都是為了確保了android的穩(wěn)定性,正常情況下最多單個程序崩潰,但整個系統(tǒng)不會崩潰,也永遠沒有內存不足的提示出現(xiàn)。大家可能是被windows毒害得太深了,總想保留更多的內存,但實際上這并不一定會提升速度,相反卻喪失了程序啟動快的這一系統(tǒng)特色,得不償失。大家不妨換種觀念習慣來使用android系統(tǒng)。

Android App內存優(yōu)化

內存優(yōu)化就是對內存問題的一個預防和解決,做內存優(yōu)化能讓應用掛得少、活得好和活得久。

掛的少:

“掛”指的是 Crash,內存問題導致 Crash 的具體表現(xiàn)就是內存溢出異常 OOM。

活得好:

活得好指的是使用流暢,Android 中造成界面卡頓的原因有很多種,其中一種就是由內存問題引起的。內存問題之所以會影響到界面流暢度,是因為垃圾回收(GC,Garbage Collection),在 GC 時,所有線程都要停止,包括主線程,當 GC 和繪制界面的操作同時觸發(fā)時,繪制的執(zhí)行就會被擱置,導致掉幀,也就是界面卡頓。

活得久:

活得久指的是我們的應用在后臺運行時不會被干掉。Android 會按照特定的機制清理進程,清理進程時優(yōu)先會考慮清理后臺進程。清理進程的機制就是LowMemoryKiller。在 Android 中不同的進程有著不同的優(yōu)先級,當兩個進程的優(yōu)先級相同時,低殺會優(yōu)先考慮干掉消耗內存更多的進程。也就是如果我們應用占用的內存比其他應用少,并且處于后臺時,我們的應用能在后臺活下來,這也是內存優(yōu)化為我們應用帶來競爭力的一個直接體現(xiàn)。

內存占用是否越少越好?

當系統(tǒng) 內存充足 的時候,我們可以多用 一些獲得更好的性能。當系統(tǒng) 內存不足 的時候,我們希望可以做到 ”用時分配,及時釋放“。內存優(yōu)化并不能一刀切。

我們都知道,應用程序的內存分配和垃圾回收都是由Android虛擬機完成的,在Android 5.0以下,使用的是Dalvik虛擬機,5.0及以上,則使用的是ART虛擬機。

Android虛擬機Dalvik和ART

1、內存區(qū)域劃分

詳細請看以下兩篇文章(建議全看):

java內存四大區(qū)_JVM內存區(qū)域劃分

Android 內存機制

2、內存回收

垃圾收集的標記算法(找到垃圾):

垃圾收集算法(回收垃圾):

引用類型:強引用、軟引用、弱引用、虛引用

對象的有效性=可達性+引用類型

JAVA垃圾回收機制-史上最容易理解看這一篇就夠了

Android:玩轉垃圾回收機制與分代回收策略

android中還存在低殺機制,這種情況屬于系統(tǒng)整機內存不足,直接把應用進程殺掉的情況。

Android后臺殺死系列:LowMemoryKiller原理

1、內存溢出

系統(tǒng)會給每個App分配內存空間也就是heap size值,當app占用的內存加上申請的內存超過這個系統(tǒng)分配的內存限額,最終導致OOM(OutOfMemory)使程序崩潰。

通過命令 getprop |grep dalvik.vm.heapsize 可以獲取系統(tǒng)允許的最大

注意:在設置了heapgrowthlimit的狀況下,單個進程可用最大內存為heapgrowthlimit值。在android開發(fā)中,若是要使用大堆,須要在manifest中指定android:largeHeap為true,這樣dvm heap最大可達heapsize。

關于heapsize heapgrowthlimit

2、內存泄漏

Android系統(tǒng)虛擬機的垃圾回收是通過虛擬機GC機制來實現(xiàn)的。GC會選擇一些還存活的對象作為內存遍歷的根節(jié)點GC Roots,通過對GC Roots的可達性來判斷是否需要回收。內存泄漏就是 在當前應用周期內不再使用的對象被GC Roots引用,造成該對象無法被系統(tǒng)回收,以致該對象在堆中所占用的內存單元無法被釋放而造成內存空間浪費,使實際可使用內存變小。簡言之,就是 對象被持有導致無法釋放或不能按照對象正常的生命周期進行釋放。

Android常見內存泄漏匯總

3、內存抖動

指的是在短時間內大量的新對象被實例化,運行時可能無法承載這樣的內存分配,在這種情況下就會導致垃圾回收事件被大量調用,影響到應用程序的UI和整體性能,最終可能導致卡頓和OOM。

常見情況:在一些被頻繁調用的方法內不斷地創(chuàng)建對象。例如在View 的onDraw方法內new 一些新的對象。

注意內存抖動也會導致 OOM,主要原因有如下兩點:

1、Android Studio Profiler

作用

優(yōu)點

內存抖動問題處理實戰(zhàn)

理解內存抖動的概念的話,我們就能明白只要能找到抖動過程中所產生的對象及其調用棧,我們就能解決問題,剛好Android Studio 的Porfiler里面的Memory工具就能幫我們記錄下我們操作過程中或靜止界面所產生的新對象,并且能清晰看到這些對象的調用棧。

選擇Profile 中 的Memory ,選擇 Record Java/Kotlin allocations,再點擊Record開始記錄, Record Java/Kotlin allocations 選項會記錄下新增的對象。

操作完成之后,點擊如圖所示的紅腦按鈕,停止記錄。

停止記錄后,我們就可以排序(點擊 Allocations可以排序)看看哪些對象或基本類型在短時間被頻繁創(chuàng)建多個,點擊這些新增的對象就可以看到它的完成的調用鏈了,進而就找找到導致內存抖動的地方在哪里了。

2、利用DDMS 和 MAT(Memory Analyzer tool)來分析內存泄漏

我們利用工具進行內存泄漏分析主要是用對比法:

a.先打開正常界面,不做任何操作,先抓取一開始的堆文件。

b.一頓胡亂操作,回到原來操作前的界面。主動觸發(fā)一兩次GC,過10秒再抓取第二次堆文件。

c.通過工具對比,獲取胡亂操作后新增的對象,然后分析這些新增的對象。

DDMS作用:抓取堆文件,主動觸發(fā)GC。(其實也是可以用Android Studio 的Profile里面的Memory工具來抓取堆文件的,但是我這邊在利用Profile 主動觸發(fā)gc 的時候會導致程序奔潰,也不知道是不是手機的問題,所以沒用Android Studio的Profiler)

MAT作用:對堆文件進行對比,找到多出的對象,找到對象的強引用調用鏈。

以下是詳細的過程:

步驟1.打開DDMS,選擇需要調試的應用,打開初始界面,點擊下圖的圖標(Dump Hprof File)先獲取一次堆文件。

步驟2.對應用隨便操作后,回到一開始的界面,先多觸發(fā)幾次GC ,點擊下圖的圖標(Cause Gc)來主動觸發(fā)GC,然后再次點擊 Dump Hprof File 圖標來獲取堆文件。

步驟3.通過Android Studio Profile 或者 DDMS dump 的堆文件無法在MAT 打開,需要借助android sdk包下的一個工具hprof-conv.exe來轉換。

格式為 hprof-conv 舊文件路徑名 要轉換的名稱;

例如:hprof-conv 2022-04-13_17-54-40_827.hprof change.hprof

步驟4.把兩份堆文件導入MAT,然后選擇其中第二次獲取的堆文件,點擊 如圖所示的 Histogram查看。

步驟5.點擊下圖圖標,Compare To Another Heap Dump ,選擇另一份堆文件。

6.會得出下圖所示的 Hitogram 展示,我們主要看Objects 這一列。 如下圖所示 “+ 2” 則代表前面兩份堆文件對比,這個對象多了兩個,我們主要就是要分析這些多了出來,沒有被回收的對象。

7.加入我們從增加的對象中,看到了MainActivity ,則需要從一開始打開的Hitogram 展示里面找到這個對象的調用棧。如下圖所示,搜索MainActivity

8.看到下圖所示解雇,然后鼠標右鍵點擊下圖紅色圈圈著的MainActivity ,選擇 Merger Shortest Paths to Gc Roots ,再選擇 exclude all phantom/weak/soft etc.references ,就可以看到這個MainActivity 對象的強引用鏈,至此我們就可以找到MainActivity對象是被什么引用導致無法回收了。

3、內存泄露檢測神器之LeakCanary(線下集成)

自行學習了解,接入簡單,使用簡單,基本可以解決大部分內存泄漏問題。

github地址 :

學習地址 :

針對內存抖動的建議:

針對內存泄漏問題的建議:

針對內存溢出問題的建議(主要就是要減少內存占用):

建議參考:

深入探索 Android 內存優(yōu)化(煉獄級別)

對于 優(yōu)化的大方向,我們應該優(yōu)先去做見效快的地方,主要有以下三部分:內存泄漏、內存抖動、Bitmap。完善監(jiān)控機制也是我們的重點,能幫助我們對內存問題快速分析和處理。

參考:

深入探索 Android 內存優(yōu)化(煉獄級別)

文章名稱:android應用內存,安卓內存占用
標題來源:http://jinyejixie.com/article30/dsedipo.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供建站公司、小程序開發(fā)、網站設計公司網站設計、企業(yè)建站、網站制作

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網站建設
宜川县| 泸州市| 张掖市| 视频| 紫金县| 西和县| 邯郸县| 牡丹江市| 淮阳县| 江安县| 叶城县| 八宿县| 浦北县| 肥东县| 秀山| 丰都县| 瑞昌市| 大埔区| 鹤壁市| 汽车| 德格县| 阳泉市| 清新县| 古交市| 江永县| 应用必备| 嘉禾县| 长顺县| 宣化县| 霍林郭勒市| 荃湾区| 科技| 河南省| 合川市| 马公市| 临海市| 海宁市| 吉安县| 福清市| 石台县| 鹤岗市|