Hotspot虛擬機(jī)常用參數(shù)完全解析

1、指定垃圾收集器

  • -XX:+UseSerialGC 指定使用串行垃圾收集器,新生代及老年代都是串行收集吉捶,在大堆或者多核cpu的環(huán)境中不大適合使用該種垃圾收集器
  • -XX:+UseParallelGC,并行垃圾收集器,新生代使用并行收集歪玲,老年代使用串行收集
  • -XX:+UseParallelOldGC,并行垃圾收器掷匠,新生代使用并行手機(jī)滥崩,老年代使用并行收集,在一些低版本的JVM該參數(shù)不支持或者不生效讹语,這兩種垃圾收集適合不在乎延時(shí)需要高吞吐的環(huán)境下使用钙皮,比如說一些批處理程序,
  • -XX:+UseConcMarkSweepGC,并發(fā)垃圾收集短条,新生代使用并行收集导匣,老年代采用并發(fā)收集,適合低延遲應(yīng)用使用該種垃圾器茸时。使用并發(fā)垃圾收集贡定,相當(dāng)于自動(dòng)添加了參數(shù)-XX:+UseParNewGC
  • -XX:+UseG1GC,使用G1垃圾收集可都,該種垃圾收集器比較復(fù)雜缓待,目前在此種垃圾收集的調(diào)優(yōu)經(jīng)驗(yàn)較少,在需要大堆的應(yīng)用可以考慮使用渠牲,相比并發(fā)垃圾收集器命斧,其產(chǎn)生的碎片更少,且可以通過參數(shù)控制垃圾收集過程中的停頓時(shí)間嘱兼。

2国葬、調(diào)整堆大小

在描述調(diào)整堆大小參數(shù),先用一張圖描述JVM堆的分布情況:


image.png

其中新生代由Eden和s0和s1組成芹壕,有時(shí)候s0也叫做from汇四,s1叫做to。現(xiàn)代JVM都是將堆分成幾個(gè)不同的區(qū)間踢涌,劃分的方法主要是根據(jù)對(duì)象的存活時(shí)間長(zhǎng)短將整個(gè)jvm內(nèi)存分為新生代通孽,老年代、永久代睁壁。相應(yīng)的主要參數(shù)有:

  • -Xms<n>[g|m|k]:調(diào)整堆的最小大小背苦,比如:-Xms1G,表示堆最小為1G潘明,在系統(tǒng)啟動(dòng)階段JVM直接向系統(tǒng)申請(qǐng)1G內(nèi)存,此參數(shù)相當(dāng)于參數(shù)-XX:InitialHeapSize=n[g|m|k]行剂;
  • -Xmx<n>[g|m|k]:調(diào)整堆的最大大小,比如:-Xms1G表示堆最大為1G钳降,此參數(shù)相當(dāng)于參數(shù)-XX:MaxHeapSize=n[g|m|k]厚宰;
  • -XX:MinHeapFreeRatio=n,指定堆最小空余比例遂填,當(dāng)堆中空余內(nèi)存比例小于該參數(shù)指定值時(shí)铲觉,JVM將增大內(nèi)存大小直到最大堆大小,默認(rèn)40吓坚;
  • -XX:MaxHeapFreeRatio=n撵幽,指定堆最大空余比例,當(dāng)堆中空余比例大于該參數(shù)制定值礁击,JVM將減少內(nèi)存大小盐杂,直到最小堆大小漏麦,默認(rèn)為70;
    JVM將在發(fā)生FGC之后况褪,根據(jù)這兩個(gè)參數(shù)調(diào)整整個(gè)對(duì)的大小,F(xiàn)GC一般消耗的時(shí)間較多更耻,為了降低延遲测垛,一般將最小堆大小和最大堆大小設(shè)置成一樣的。
  • -XX:NewRatio=n,老年代與新生代內(nèi)存占比秧均,-XX:NewRatio=4表示年輕代是老年代內(nèi)存的1/4食侮,也就是說年輕代占用總堆內(nèi)存的1/5;
  • -XX:SurvivorRatio=n,Eden區(qū)與1個(gè)survivor區(qū)域內(nèi)存占比,-XX:SurvivorRatio=8目胡,表示EdenEden區(qū)域的內(nèi)存是一個(gè)survivor區(qū)域內(nèi)存的8倍锯七,一共兩個(gè)survivor區(qū)域,因此survivor占用新生代的1/10誉己;
  • -XX:PermSize=<n>[g|m|k],-XX:MaxPermSize=<n>[g|m|k],這兩個(gè)參數(shù)用于制定永久代內(nèi)存大小眉尸,這個(gè)兩個(gè)參數(shù)在jdk8中已經(jīng)失效;
  • -XX:MetaspaceSize=<n>[g|m|k], -XX:MaxMetaspaceSize=<n>[g|m|k]巨双,在jdk中使用這兩個(gè)參數(shù)指定元數(shù)據(jù)空間大性牖;
  • -XX:TargetSurvivorRatio=n,設(shè)定survivor區(qū)的目標(biāo)使用率筑累,默認(rèn)是50%袱蜡;
  • -XX:MaxDirectMemorySize=<n>[g|m|k],設(shè)置直接內(nèi)存的大小,在使用一些nio框架時(shí)最好設(shè)置一下此參數(shù)慢宗,此參數(shù)如果過小也有可能導(dǎo)致頻繁觸發(fā)FGC坪蚁;
  • -Xss<n>[g|m|k],指定Java線程棧的大小镜沽,默認(rèn)值受環(huán)境影響敏晤,Xss越大,進(jìn)程能運(yùn)行的最大線程數(shù)就少缅茉,如果設(shè)置的過小茵典,容易導(dǎo)致StackOverflowError錯(cuò)誤;

3宾舅、收集gc日志

  • -verbose:gc,輸出gc日志信息统阿,默認(rèn)輸出到標(biāo)準(zhǔn)輸出,參數(shù)與-XX:+PrintGCDetails作用一致筹我;
  • -XX:+PrintGCDetails扶平,打印gc日志,打印的出日志包含日志收集原因蔬蕊,歌區(qū)域變化情況结澄,以及用時(shí);
  • -XX:+PrintGCDateStamps,日志中輸出時(shí)間戳;
  • -XX:+PrintGCTimeStamps,日志中輸出時(shí)間戳麻献,與PrintGCDateStamps參數(shù)不同的地方在于们妥,此參數(shù)輸出的時(shí)間是相對(duì)與應(yīng)用啟動(dòng)時(shí)間的差值;
  • -Xloggc:filename,把gc日志信息輸入到指定文件中勉吻,
  • -XX:+PrintGCApplicationStoppedTime监婶,打印垃圾收集期間應(yīng)用被暫停的時(shí)間;
  • -XX:+PrintGCApplicationConcurrentTime齿桃,垃圾收集之前打印出應(yīng)用未中斷的執(zhí)行時(shí)間惑惶;
  • -XX:+UseGCLogFileRotation, -XX:GCLogFileSize=n,這兩個(gè)參數(shù)用于設(shè)置gc文件滾動(dòng)和設(shè)置滾動(dòng)日志文件的個(gè)數(shù)短纵,為了防止單個(gè)gc日志文件太大带污,生產(chǎn)上建議加上這兩個(gè)參數(shù);

4香到、CMS垃圾收集器參數(shù)

調(diào)優(yōu)CMS垃圾收集器比調(diào)優(yōu)吞吐量垃圾收集器復(fù)雜許多鱼冀,下面列出一些用于設(shè)置CMS收集器的參數(shù):

  • -XX:CMSInitiatingOccupancyFraction=n,設(shè)置CMS垃圾收集器啟動(dòng)回收老年代的時(shí)機(jī)悠就,當(dāng)老年代對(duì)象占比超過n時(shí)雷绢,就啟動(dòng)一次CMS回收周期,注意:這個(gè)參數(shù)只是設(shè)定首次CMS垃圾回收理卑;
  • -XX:+UseCMSInitiatingOccupancyOnly翘紊,使用這個(gè)參數(shù)可以使CMS一直按照CMSInitiatingOccupancyFraction設(shè)定的值啟動(dòng);
  • -XX:CMSInitiatingPermOccupancyFraction=n,設(shè)置永久代內(nèi)存占比超過n啟動(dòng)cms回收藐唠,此參數(shù)需要配合參數(shù)-XX:+CMSClassUnloadingEnabled一起使用(Java8默認(rèn)開啟)帆疟;
  • -XX:+CMSParallelInitialEnabled, 用于開啟CMS initial-mark階段采用多線程的方式進(jìn)行標(biāo)記,用于提高標(biāo)記速度宇立,在Java8開始已經(jīng)默認(rèn)開啟踪宠;
  • -XX:+CMSParallelRemarkEnabled,用戶開啟CMS remark階段采用多線程的方式進(jìn)行重新標(biāo)記妈嘹,默認(rèn)開啟柳琢;
  • -XX:CMSFullGCsBeforeCompaction,我們知道cms垃圾收集器會(huì)產(chǎn)生內(nèi)存碎片润脸,該參數(shù)用于設(shè)置多少次CMS gc之后進(jìn)行一次內(nèi)存壓縮柬脸;該參數(shù)默認(rèn)值為0;
  • -XX:+ExplicitGCInvokesConcurrent 毙驯、-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses這兩個(gè)參數(shù)用戶指定hotspot虛擬在執(zhí)行System.gc()時(shí)使用CMS周期;
  • -XX:+CMSScavengeBeforeRemark倒堕,強(qiáng)制hotspot虛擬機(jī)在cms remark階段之前做一次minor gc,用于提高remark階段的速度爆价;
  • -XX:ConcGCThreads=n垦巴,設(shè)置并發(fā)垃圾收集的線程數(shù)媳搪,默認(rèn)該值是基于ParallelGCThreads計(jì)算出來的;
  • -XX:+CMSPrecleaningEnabled骤宣,指定CMS是否需要進(jìn)行Pre cleaning這個(gè)階段秦爆,這個(gè)階段的主要工作是:1、在并發(fā)標(biāo)記階段階段由于業(yè)務(wù)線程同步在跑憔披,新生代中對(duì)象有可能引用到老年代的對(duì)象等限,產(chǎn)生新的引用關(guān)系,這個(gè)時(shí)候需要重新標(biāo)記出老年代中被引用的對(duì)象活逆;2、老年代中對(duì)象引用關(guān)系發(fā)生變化拗胜,這個(gè)需要把引用關(guān)系發(fā)生變化的卡表(card table)標(biāo)記為dirty蔗候,提高remark標(biāo)記的效率;
  • -XX:CMSMaxAbortablePrecleanTime=n埂软,設(shè)置cms abortable pre階段最長(zhǎng)持續(xù)時(shí)間锈遥,單位為s,默認(rèn)值5s勘畔。abortable prelean階段默認(rèn)在Eden區(qū)大于2M啟動(dòng)(通過參數(shù):-XX:CMSScheduleRemarkEdenSizeThreshold =n設(shè)置)所灸,直到Eden區(qū)域占用率超過50%(通過參數(shù):-XX:CMSScheduleRemarkEdenPenetration=n)時(shí)結(jié)束,同時(shí)還可以指定參數(shù)-XX:CMSMaxAbortablePrecleanLoops=n設(shè)置該階段的循環(huán)次數(shù)(默認(rèn)0炫七,表示不限制次數(shù))爬立,為了防止abortable pre clean階段陷入無限等待,故設(shè)置一個(gè)最長(zhǎng)的持續(xù)時(shí)間万哪,達(dá)到最長(zhǎng)持續(xù)時(shí)間之后侠驯,該階段終止,進(jìn)入remark階段奕巍;

5吟策、其他參數(shù)

  • -XX:+DisableExplicitGC,禁止hotspot執(zhí)行System.gc()的止,默認(rèn)禁用檩坚;

  • -XX:+ScavengeBeforeFullGC,在執(zhí)行full gc之前執(zhí)行一次minor gc,默認(rèn)開啟诅福;

  • -XX:MaxTenuringThreshold=n匾委,設(shè)定新生代的對(duì)象在經(jīng)歷多少次minor gc之后將轉(zhuǎn)移到老年代,默認(rèn)是15氓润;

  • -XX:+HeapDumpOnOutOfMemoryError剩檀,在hotspot發(fā)生OOM時(shí)打印出堆,默認(rèn)打印到應(yīng)用工作目錄旺芽,文件名稱為java_pid%p.hprof沪猴;

  • -XX:HeapDumpPath=xx辐啄,指定hotspot虛擬機(jī)OOM時(shí)堆轉(zhuǎn)儲(chǔ)文件的path;

  • -XX:ErrorFile=xx运嗜,設(shè)置JVM crash時(shí)生成crash文件的路徑壶辜,默認(rèn)為./hs_err_pid%p.log;

  • -XX:+ParallelRefProcEnabled担租,采用多線程的方式發(fā)現(xiàn)需要處理的finalize方法的對(duì)象砸民,非多線程執(zhí)行對(duì)象的finalize方法;

  • -XX:ParallelGCThreads=n奋救,設(shè)置并行收集的線程數(shù)岭参,默認(rèn)值采用Runtime.getRuntime().availableProcessors()來確定。不過是建立在返回值小于等于8的情況下尝艘,反之演侯,會(huì)使用Runtime.availableProcessors()*5/8作為線程數(shù)。

  • -XX:+UseAdaptiveSizePolicy背亥,開啟自適應(yīng)調(diào)整JAVA內(nèi)存策略秒际,在使用吞吐量垃圾收集器時(shí),該參數(shù)用于讓jvm自行調(diào)整Eden區(qū)和Survivor區(qū)空間的大小狡汉,新生代與老年代空間的大新病;

  • -XX:+PrintAdaptiveSizePolicy,可以打印出survivor的一些詳細(xì)信息盾戴,關(guān)于survivor區(qū)間是否溢出寄锐,是否有對(duì)象轉(zhuǎn)移到老年代;

  • -XX:+PrintTenuringDistribution尖啡,顯示出survivor區(qū)間有效對(duì)象的年齡分布情況锐峭,可以通過該參數(shù)的輸出確定出survivor大小以及MaxTenuringThreshold的值;

  • -XX:MaxGCPauseMillis=n可婶,設(shè)置最大gc停頓時(shí)間沿癞,這個(gè)時(shí)間不是設(shè)置的越小越好,此參數(shù)只在ps收集器上有效矛渴,不建議修改此參數(shù)的值椎扬;

  • -XX:GCTimeRatio,設(shè)置垃圾收集時(shí)間占總時(shí)間的比率具温,默認(rèn)為99蚕涤,也就是說垃圾收集時(shí)間占用總時(shí)間的1%,此參數(shù)只在ps收集器上有效铣猩;

  • -XX:+HeapDumpAfterFullGC揖铜,在執(zhí)行一次FGC之后打印出Heap到文件;

  • -XX:+HeapDumpBeforeFullGC达皿,在執(zhí)行一次FGC之前打印出Heap到文件天吓,這兩個(gè)參數(shù)主要用于調(diào)試贿肩;

  • -XX:+PrintHeapAtGC,打印gc前后堆詳細(xì)信息龄寞,不管是minor gc還是full gc都會(huì)打犹妗;

  • -XX:+GCLockerInvokesConcurrent物邑,在執(zhí)行g(shù)c之前都需要先先查看 gc locker是否被java線程持有溜哮,如果存在gc locker被持有的情況則忽略此次gc,在所有java線程完全釋放gc locker之后補(bǔ)償一次gc色解。此參數(shù)指定茂嗓,如果是fgc的話,則補(bǔ)償一次CMS back groud fgc科阎。

  • -XX:ReservedCodeCacheSize=<n>[g|m|k]述吸、-XX:InitialCodeCacheSize=<n>[g|m|k],指定代碼緩存的大小萧恕,用于保存已編譯方法生成的本地代碼刚梭,如果代碼緩存被占滿JVM會(huì)發(fā)出警告信息肠阱,并切換到interpreted-only模式票唆,JIT編譯器被停用,字節(jié)碼將不會(huì)再編譯成機(jī)器碼屹徘。這樣的話對(duì)JVM的性能影響很大走趋;

  • -XX:+UseCodeCacheFlushing,如果代碼緩存不斷增長(zhǎng)導(dǎo)致代碼緩存空間不夠噪伊,使用該參數(shù)讓jvm放棄一些被編譯的代碼簿煌,避免代碼緩存被占滿時(shí)JVM切換到interpreted-only的情況;

  • -XX:+DoEscapeAnalysis鉴吹,開啟逃逸分析姨伟,逃逸分析是一種分析對(duì)象范圍的技術(shù),在一些情況一個(gè)線程分配的對(duì)象可能會(huì)被其他對(duì)象使用豆励,這種現(xiàn)象叫做“逃逸”夺荒,如果一個(gè)對(duì)象沒有“逃逸”,則可以運(yùn)用一些額外的優(yōu)化技術(shù)良蒸,這種優(yōu)化技術(shù)“逃逸分析”技扼。通過“逃逸分析” JIT可以使用如下技術(shù)優(yōu)化:

    1. 棧上分配
    2. 消滅同步
    3. 消滅垃圾回收讀寫障礙
    4. 對(duì)象爆炸
  • -XX:+UseBiasedLocking,開啟偏向鎖嫩痰,偏向鎖是是鎖偏愛上次使用它的線程剿吻,在非競(jìng)爭(zhēng)鎖的場(chǎng)景下,可以實(shí)現(xiàn)無鎖的開銷串纺。

  • -XX:+UseLargePages丽旅,開啟使用大頁面椰棘,使用大頁面可以提高TLB(translation lookaside buffer(轉(zhuǎn)換后備緩存區(qū)))的緩存命中率;

  • -XX:PretenureSizeThreshold=n,指定對(duì)象占用的字節(jié)數(shù)超過n之后直接在老年代中分配魔招,默認(rèn)值0晰搀,表示最大值;

  • -XX:+OmitStackTraceInFastThrow办斑,一些頻繁拋出的異常外恕,JVM為了性能優(yōu)化而拋出沒有堆棧的異常,默認(rèn)開啟乡翅,

  • -XX:+PrintFlagsInitial鳞疲、-XX:+PrintFlagsFinal,打印出設(shè)置的JVM參數(shù)和最終生效的JVM參數(shù)和他們的值蠕蚜,-XX:+PrintCommandLineFlags打印出被修改的JVM參數(shù)尚洽,一般在啟動(dòng)應(yīng)用添加此參數(shù)打印出引用啟動(dòng)時(shí)添加的JVM參數(shù),在應(yīng)用運(yùn)行過程中一些JVM參數(shù)可能會(huì)被修改掉(通過jinfo工具)靶累;

  • -XX:+PrintSafepointStatistics腺毫,打印安全點(diǎn)統(tǒng)計(jì)信息,-XX:PrintSafepointStatisticsCount=n設(shè)置打印安全點(diǎn)統(tǒng)計(jì)信息的次數(shù)挣柬;
    -XX:+PrintReferenceGC潮酒,打印gc時(shí)處理的reference情況;
    -XX:+UseCompressedOops邪蛔,開啟壓縮指針急黎,壓縮指針主要是為了解決32位操作系統(tǒng)內(nèi)存尋址范圍只有4G的限制,開啟壓縮指針最大尋址范圍增加到32G侧到;如果內(nèi)存超過32G(Xmx>32G)勃教,開啟該參數(shù)無效;
    -XX:+ParallelRefProcEnabled,使用此參數(shù)激活多線程方式的引用處理匠抗,截止到目前的jdk8該參數(shù)默認(rèn)關(guān)閉故源,如果在gc中發(fā)現(xiàn)處理ref處理的時(shí)間過長(zhǎng),可以通過參數(shù)-XX:+PrintReferenceGC打印出每次垃圾收集中記錄每個(gè)引用對(duì)象類型的統(tǒng)計(jì)數(shù)據(jù)汞贸,另外如果發(fā)現(xiàn)有大量軟引用正在被處理绳军,可以使用參數(shù)-XX:SoftRefLRUPolicyPerMB調(diào)整軟件用的處理策略,該參數(shù)的默認(rèn)值為1000(ms)著蛙,該參數(shù)的含義是删铃,使用該參數(shù)設(shè)置的值乘以java堆可用空間(以兆為單位)的出來的值,若軟引用在這段時(shí)間內(nèi)沒有被訪問踏堡,那么這些軟引用將會(huì)被回收猎唁,調(diào)優(yōu)引用處理的目標(biāo)主要有兩點(diǎn):第一是降低引用在gc過程中處理時(shí)間,第二是降低heap的占用空間,減少垃圾收集頻率和最終需要復(fù)制的時(shí)間诫隅;

總結(jié)

本文列舉了一些常用的JVM參數(shù)腐魂,至于如何調(diào)整各參數(shù)已達(dá)到JVM的最佳性能要以場(chǎng)景而定,最后來一張圖(來自JVM Internals)說明JVM運(yùn)行狀態(tài):

JVM運(yùn)行狀態(tài).png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逐纬,一起剝皮案震驚了整個(gè)濱河市蛔屹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌豁生,老刑警劉巖兔毒,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異甸箱,居然都是意外死亡育叁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門芍殖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來豪嗽,“玉大人,你說我怎么就攤上這事豌骏」昝危” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵窃躲,是天一觀的道長(zhǎng)计贰。 經(jīng)常有香客問我,道長(zhǎng)框舔,這世上最難降的妖魔是什么蹦玫? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任赎婚,我火速辦了婚禮刘绣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挣输。我一直安慰自己纬凤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布撩嚼。 她就那樣靜靜地躺著停士,像睡著了一般。 火紅的嫁衣襯著肌膚如雪完丽。 梳的紋絲不亂的頭發(fā)上恋技,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音逻族,去河邊找鬼蜻底。 笑死,一個(gè)胖子當(dāng)著我的面吹牛聘鳞,可吹牛的內(nèi)容都是我干的薄辅。 我是一名探鬼主播要拂,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼站楚!你這毒婦竟也來了脱惰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤窿春,失蹤者是張志新(化名)和其女友劉穎拉一,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旧乞,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舅踪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了良蛮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抽碌。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖决瞳,靈堂內(nèi)的尸體忽然破棺而出货徙,到底是詐尸還是另有隱情,我是刑警寧澤皮胡,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布痴颊,位于F島的核電站,受9級(jí)特大地震影響屡贺,放射性物質(zhì)發(fā)生泄漏蠢棱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一甩栈、第九天 我趴在偏房一處隱蔽的房頂上張望泻仙。 院中可真熱鬧,春花似錦量没、人聲如沸玉转。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽究抓。三九已至,卻和暖如春袭灯,著一層夾襖步出監(jiān)牢的瞬間刺下,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國打工稽荧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留橘茉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捺癞,于是被迫代替她去往敵國和親夷蚊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361