1、垃圾回收的方法
生活中可回收资源主要有:
(1)废纸:报纸、书本纸、包装用纸、办公用纸、广告用纸、纸盒等;注意纸巾和厕所纸由于水溶性太强不可回收。
(2)塑料:各种塑料袋、塑料泡沫、塑料包装、一次性塑料餐盒餐具、硬塑料、料牙刷、塑料杯子、矿泉水瓶等;
(3)玻璃:玻璃瓶和碎玻璃片、镜子、灯泡、暖瓶等;
(4)金属:易拉罐、铁皮罐头盒、牙膏皮等。
(5)布料:主要包括废弃衣服、桌布、毛巾、布包等
如每回收1吨废纸可造好纸850公斤,节省木材300公斤,比等量生产减少污染74%;每回收1吨塑料饮料瓶可获得0.7吨二级原料;每回收1吨废钢铁可炼好钢0.9吨,比用矿石冶炼节约成本47%,减少空气污染75%,减少97%的水污染和固体废物。
可回收物以外的垃圾基本上都是废弃物。比如烟头、鸡毛、废电、煤渣、建筑垃圾、油漆颜料、食品残留物等等。
有毒垃圾,包括废电池、日光灯管、水银温度计、油漆筒、药品、化妆品等。垃圾是放错了地方的财富。回收垃圾不但美化环境,而且垃圾再利用可以节省新资源的开采从而从根本上减少垃圾。参与环保举手之劳,让我们从身边小事做起,从正确投放垃圾做起吧。目前垃圾,均以焚化方式处理,根据统计,垃圾中约有40%-50%是可回收再生的资源垃圾,实施垃圾分类可回收有用资源,保护焚化炉炉体,减少公害防治成本,亦可保障人民身体健康,利已又利人。为了开创更美好清新的港都,造就永续资源再利用
废电池中含有汞、镉、铅、锌等重金属有毒物质。人若汞中毒,会损害中枢神经系统,死亡率高达40%;镉的主要危害是肾毒性,还会续发“痛痛病”( 引起骨质疏松,软骨病和骨折)同时还是致癌物质;人体食用含铅的食物,会影响酶及正常血红素合成,影响神经系统;
就比如说,废电池在填埋处理一个月内,其金属外壳就会被腐蚀穿孔,废电池中的有害物质就会进入土壤、水体,对环境造成污染。据环保专家测试,如果 6吨生活垃圾中混入一粒含汞电池,当这些垃圾进行填埋后,土壤中汞的浓度就会超过安全标准;若废电池混入生活垃圾进入焚烧厂,则其中的汞、镉等金属将会在高温下气化排入大气,使大气环境受污染,影响人体的健康。
2、关于垃圾回收的问题
垃圾处理都是问题 别说回收了。
一般意义上的回收比较简单,但是需要全民环保意识的提高,主动的将垃圾分类投放垃圾桶。像饮料罐什么的简单废品都可以回收。
但是像电池、冰箱、电脑之类的很难。比如电池,我们学校以前在教学楼有个专门的回收桶,也有很多同学往里面放。但是这些东西最后去哪里了?我们老师说,目前中国还处理不了,或者说不能全部处理,成本很高。大部分都找个地方深埋了。这东西埋了就等于造了一颗不定定时炸弹,早晚出问题。还不如不收集直接分散到环境了。(我老是是做固废的)
冰箱 电脑之类的复合垃圾需要拆、分类。更麻烦,小作坊收去以后拆下来有用的(内卖钱的)其他的部分都随便扔了,里面的重金属什么的污染尤其厉害。
喊口号容易,实际上……
3、如何驯服java GC导致暂停
内存(条)是便宜,很不幸,垃圾回收机制导致的暂停会严重影响系统性能,好像JVM内存最多支持2G,作者花费大量时间精力使用32G来提高系统性能,这篇是其心得。
GC微调是非常和应用有关,该篇的目标要求是:使用10G更大Heaps和严格的响应时间(毫秒级别),(吞吐量和延迟性是一对矛盾,这次GC微调主要是追求低延迟)。作者项目特点是:
1.Heap用于在内存中储存数据结构
2.Heap大小超过10G
3.请求时间要求更快
4.事务是短的(几百毫秒) 一个事务可以包括几个请求
5.内存中数据修改频率和面积低,不会一秒内修改整个10G内存,每秒更新10M即可。
此处省略垃圾回收机制原理介绍.....
总体来说,banq注:JVM分新生代和旧生代,新创建在新生代,通过新生代垃圾回收,如果不能被回收,将逐步转入旧生代,旧生代内存可以实现缓存In-memeory数据,显然新旧两代的垃圾回收算法最好不一样,新生代需要频繁,而旧生代不需要频繁,如果我们内存缓存控制得好,旧生代就不会启动垃圾回收机制,这样就不会导致系统暂停。
该文介绍如何来进行新生代大小调节,防止垃圾回收机制频繁启动,先使用XX:MaxNewSize= -XX:NewSize= 指定新生代大小,使用-XX:+PrintGCDetails -XX:+PrintTenuringDistribution -XX:+PrintGCTimestamps)输出GC诊断结果。
有几个数据需要计算一下:
新生代收集期间值,整个分配情况,短生命对象的分配大小,长生命对象的分配情况,中等生命对象分配。
我个人更喜欢使用psi-Probe安装在tomcat下,一目了然,如附件图:
配置恰当的缓存Cache策略来解决GC问题也相当重要,我们提倡基于内存的领域对象编程,大量数据都在缓存中in-memory,如何保证他们的生命周期和JVM的垃圾回收机制不冲突,也是一种实际问题,文章提出下面几点:
1.为缓存增加失效期,让新生代的GC期间要长于缓存的失效期,也就是缓存中对象数据失效后,正好GC启动后可以回收这些失效对象。
2.增加延长新生代的GC期间。
3.在缓存中使用弱引用。缓存产品自己的事,和我们应用者无关。
4.增加缓存大小,我个人经验尽可能将数据库数据以领域对象方式都加载到内存中。
JVM首先分配所有对在新生代,然后将幸存对象(一般是缓存中对象)再分配到旧生代,或再分配到新生代,这些对象的拷贝将耗费时间导致新生代收集暂停,两种选择:
1.在第一次收集时,就将对象复制到旧生代
2.第二次收集时,将对象复制到旧生代。
第一种办法将导致一些短生命周期对象复制到旧生代,第二种办法需要注意新生代垃圾收集的频度和长生命周期对象是否小。
对于一个巨大的heap,新生代垃圾收集暂停主要是在空间扫描和复制幸存对象上,在新生代大小上需要取得一个平衡,旧生代大小足够放入应用的数据,比如JiveJdon一天下来缓存的大小是200K左右(每天启动的情况下),只要旧生代大小大于这个值即可,不能太大,也不能太小。
增加新生代大小要增加整个JVM大小,否则就会降低旧生代的内存大小。
可以配置cms短期暂停:–XX:CMSWaitDuration –设置收集暂停的最大间隔时间,越大你的应用将被暂停,类似死机没有反应。XX:+CMSScavengeBeforeRemark 可以避免在收集期间同时扫描。
原文还提到CMS(Concurrent Mark Sweep)激活会导致暂停等等。
针对不同应用特点进行算法配置,在线事务处理将耗费响应时间,而批处理将产生大量垃圾,这些都要用不同JVM来处理。
4、cms垃圾回收算法在gc过程中哪几个阶段会暂停应用县城
中间调整过几次,先搞了几台机器做了验证,后来逐步推广的。
1、调大heap区,由原来的4g,调整到5g,young区的大小不变,还是2g,这时候old区就由2g变为3g了(这样保证old区有足够的空间);
2、设置-XX:UseCMSInitiatingOccupancyOnly,其实这个不关这个问题,只是发现半夜CMS进行的有点频繁,就禁止掉了悲观策略;
3、设置CMS区回收的比例,从80%调整到75%,让old区尽早的进行,有足够的空间剩余;
为什么要有GC(垃圾回收)?
JVM通过GC来回收堆和方法区中的内存,GC的基本原理就是找到程序中不再被使用的对象,然后回收掉这些对象占用的内存。
主要的收集器有哪些?
引用计数器和跟踪计数器两种。
引用计数器记录对象是否被引用,当计数器为零时,说明对象已经不再被使用,可以进行回收。java中的对象有复杂的引用关系,不是很适合引用计数器,所以sun jdk中并没有实现这种GC方式。
跟踪收集器,全局记录数据的引用状态,基于一定的条件触发。执行的时候,从根集合开始扫描对象的引用关系,主要有复制(copying)、标记-清除(Mark-Sweep)、标记-压缩(Mark-Compact)那种算法。
5、cms gc过程中哪几个阶段暂停应用程序
问题解决:中间调整过几次,先搞了几台机器做了验证,后来逐步推广的。
1、调大heap区,由原来的4g,调整到5g,young区的大小不变,还是2g,这时候old区就由2g变为3g了(这样保证old区有足够的空间);
2、设置-XX:UseCMSInitiatingOccupancyOnly,其实这个不关这个问题,只是发现半夜CMS进行的有点频繁,就禁止掉了悲观策略;
3、设置CMS区回收的比例,从80%调整到75%,让old区尽早的进行,有足够的空间剩余;
为什么要有GC(垃圾回收)?
JVM通过GC来回收堆和方法区中的内存,GC的基本原理就是找到程序中不再被使用的对象,然后回收掉这些对象占用的内存。
6、cms垃圾回收算法在gc过程中哪个阶段会暂停应用线程
Phase 1: Initial Mark(初始化标记)和 Phase 5: Final Remark(重新标记)这两个阶段会发生stop-the-world,暂停所有应用线程。
7、cms垃圾回收算法在gc过程中哪几个阶段会暂停
P
8、cms垃圾回收算法在gc过程中的哪个阶段会暂停应用线程
GC在java中是垃圾回收机制,当你创建一个对象时,它就开始跟踪,当对象“可到达”时,就自动回收,也可以手动调用,但一般不推荐使用
9、怎么禁止程序后台运行或暂停
使用android手机的用户可能都安装了任务管理的软件,使用android手机真的有必要安装结束任务的软件吗?大家在使用中也都发现了,很多软件在被结束后,马上就会又出现在任务列表里,或是稍等一会自己也会出现,任务管理不停的结束后台程序,也没见给手机的运行速度带来多少提升,这是为什么呢? 其实大家不用那么在意android手机剩余内存的大小。很多人都是把使用其他系统的习惯带到了android手机上,不是所有的智能手机系统都一样的。android大多数应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系。如果你知道java,就能更清楚这机制了。其实和java的垃圾回收机制类似,系统有一个规则来回收内存。进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西。当然这个值默认设置得很小,所以你会看到内存老在很少的数值徘徊。但事实上他并不影响速度。相反加快了下次启动应用的速度。这本来也是android的优势之一,如果人为去关闭进程,没有太大必要。