??xml version="1.0" encoding="utf-8" standalone="yes"?>国产·精品毛片,国产亚洲字幕,国产精品视频免费http://www.aygfsteel.com/anchor110/category/45631.htmlzh-cnMon, 01 Dec 2014 05:41:28 GMTMon, 01 Dec 2014 05:41:28 GMT60java cpu高问题分析方?/title><link>http://www.aygfsteel.com/anchor110/articles/420528.html</link><dc:creator>一败涂?/dc:creator><author>一败涂?/author><pubDate>Mon, 24 Nov 2014 10:26:00 GMT</pubDate><guid>http://www.aygfsteel.com/anchor110/articles/420528.html</guid><wfw:comment>http://www.aygfsteel.com/anchor110/comments/420528.html</wfw:comment><comments>http://www.aygfsteel.com/anchor110/articles/420528.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anchor110/comments/commentRss/420528.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anchor110/services/trackbacks/420528.html</trackback:ping><description><![CDATA[<div>Ҏȝ如下Q?br />1、top查看耗CPU的javaU程IDQ假讄EID?987?br />2、top -H -p 1987查看此进E下的所有线E,记录下耗CPU的JAVAU程IDQ假如:12706?br />3、jstack 1987 > thread.dumpQ将q程当时的内存情况DUMPC个文件中?br />4、vi thread.dumpQ然后将U程ID12706转化为十六进Ӟ?1A2Q注意此处需要将所有大写字母小写化Q即最lؓQ?1a2Q在thread.dump中查?1a2Q即可定位到问题代码?/div><img src ="http://www.aygfsteel.com/anchor110/aggbug/420528.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anchor110/" target="_blank">一败涂?/a> 2014-11-24 18:26 <a href="http://www.aygfsteel.com/anchor110/articles/420528.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>监控pȝ服务和端口,异常时实现自动重?/title><link>http://www.aygfsteel.com/anchor110/articles/395939.html</link><dc:creator>一败涂?/dc:creator><author>一败涂?/author><pubDate>Fri, 01 Mar 2013 09:08:00 GMT</pubDate><guid>http://www.aygfsteel.com/anchor110/articles/395939.html</guid><wfw:comment>http://www.aygfsteel.com/anchor110/comments/395939.html</wfw:comment><comments>http://www.aygfsteel.com/anchor110/articles/395939.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anchor110/comments/commentRss/395939.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anchor110/services/trackbacks/395939.html</trackback:ping><description><![CDATA[详见Qhttp://www.51testing.com/html/86/n-214186.html<br /><br />CZQ监听ssh服务Q如果停止则自动重启服务Q步骤如下:<br />1、vi /etc/monit.d/sshd.monit?br />2、撰写内容,如下Q?br /><div>check process sshd with pidfile /var/run/sshd.pid<br />    start program = "/etc/init.d/sshd start"<br />    stop program = "/etc/init.d/sshd stop"<br />    if failed port 22 protocol ssh then restart<br />    if 5 restarts within 5 cycles then timeout</div>3、如果要讄monit的相兛_敎ͼ比如多长旉一ơ,请修?etc/monit.confQ示例文件如下:<br /><div>set daemon 300<br /><br />set logfile /var/log/monit.log<br />set idfile /var/monit/id<br />set statefile /var/monit/state<br /><br />set httpd port 2812 and use address 127.0.0.1<br />    allow 127.0.0.1<br />    allow surfront:surfront<br /><br />check system 127.0.0.1<br /><br />include /etc/monit.d/*.monit<br />4、重启monit服务Q?etc/init.d/monit restart?br />5、完毕,monit的相x志位?var/log/monit.log?/div><br /><img src ="http://www.aygfsteel.com/anchor110/aggbug/395939.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anchor110/" target="_blank">一败涂?/a> 2013-03-01 17:08 <a href="http://www.aygfsteel.com/anchor110/articles/395939.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql查看数据库连接数及状?/title><link>http://www.aygfsteel.com/anchor110/articles/391643.html</link><dc:creator>一败涂?/dc:creator><author>一败涂?/author><pubDate>Tue, 20 Nov 2012 07:02:00 GMT</pubDate><guid>http://www.aygfsteel.com/anchor110/articles/391643.html</guid><wfw:comment>http://www.aygfsteel.com/anchor110/comments/391643.html</wfw:comment><comments>http://www.aygfsteel.com/anchor110/articles/391643.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anchor110/comments/commentRss/391643.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anchor110/services/trackbacks/391643.html</trackback:ping><description><![CDATA[命o如下Q?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">mysqladmin </span><span style="color: #000000; ">-</span><span style="color: #000000; ">uroot </span><span style="color: #000000; ">-</span><span style="color: #000000; ">p123456 status</span></div>注:Threads即ؓq接个数?br /><img src ="http://www.aygfsteel.com/anchor110/aggbug/391643.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anchor110/" target="_blank">一败涂?/a> 2012-11-20 15:02 <a href="http://www.aygfsteel.com/anchor110/articles/391643.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用排错技?/title><link>http://www.aygfsteel.com/anchor110/articles/391150.html</link><dc:creator>一败涂?/dc:creator><author>一败涂?/author><pubDate>Sat, 10 Nov 2012 12:32:00 GMT</pubDate><guid>http://www.aygfsteel.com/anchor110/articles/391150.html</guid><wfw:comment>http://www.aygfsteel.com/anchor110/comments/391150.html</wfw:comment><comments>http://www.aygfsteel.com/anchor110/articles/391150.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anchor110/comments/commentRss/391150.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anchor110/services/trackbacks/391150.html</trackback:ping><description><![CDATA[/var/log/messagesQ记录系l出错信息?br />/var/log/monit.logQ记录服务运行相xc?br />/tmpQmysql查询时生的临时表默认会存放在这。当Ӟ你可以手动修?etc/my.cnf中tmpdir为另一位置?img src ="http://www.aygfsteel.com/anchor110/aggbug/391150.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anchor110/" target="_blank">一败涂?/a> 2012-11-10 20:32 <a href="http://www.aygfsteel.com/anchor110/articles/391150.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql大数据量下修改表l构的方?/title><link>http://www.aygfsteel.com/anchor110/articles/361152.html</link><dc:creator>一败涂?/dc:creator><author>一败涂?/author><pubDate>Thu, 13 Oct 2011 07:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/anchor110/articles/361152.html</guid><wfw:comment>http://www.aygfsteel.com/anchor110/comments/361152.html</wfw:comment><comments>http://www.aygfsteel.com/anchor110/articles/361152.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anchor110/comments/commentRss/361152.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anchor110/services/trackbacks/361152.html</trackback:ping><description><![CDATA[当表数据量是几百万条以上Ӟ如果要修改原表结构,比如l原表加个列字段Q同时在q个表上加烦引?br />请勿使用以下方式Q?br /><div>alter table video_names add column type VARCHAR(255) NOT NULL, add index(type)</div><br />原因是:<br />l过实际试Q表数据量是800多万条,q行上述语句Ӟ几个时执行不完?br /><br /><br />正确方式Q?br />1、创Z个新表tmp_names<br />2、执行insert into tmp_names(****) select ***** from video_name;<br />3、删除video_names<br />4、重命名tmp_name为video_names;语句为rename table tmp_names to video_names;<img src ="http://www.aygfsteel.com/anchor110/aggbug/361152.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anchor110/" target="_blank">一败涂?/a> 2011-10-13 15:17 <a href="http://www.aygfsteel.com/anchor110/articles/361152.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JVM内存理ȝ(注:转蝲于http://topic.csdn.net/u/20090602/10/bd9d4ba2-dbeb-49b3-8651-67c5de2b228a.html)http://www.aygfsteel.com/anchor110/articles/330161.html一败涂?/dc:creator>一败涂?/author>Sun, 29 Aug 2010 05:13:00 GMThttp://www.aygfsteel.com/anchor110/articles/330161.htmlhttp://www.aygfsteel.com/anchor110/comments/330161.htmlhttp://www.aygfsteel.com/anchor110/articles/330161.html#Feedback0http://www.aygfsteel.com/anchor110/comments/commentRss/330161.htmlhttp://www.aygfsteel.com/anchor110/services/trackbacks/330161.html

? 图所C,JVM主要包括两个子系l和两个lg。两个子pȝ分别是Class loader子系l和Execution engine(执行引擎) 子系l;两个lg分别是Runtime data area (q行时数据区?lg和Native interface(本地接口)lg?br />  
Class loader子系l的作用Q根据给定的全限定名cd(?java.lang.Object)来装载class文g的内容到 Runtime data area中的method area(Ҏ区域)。JavaE序员可以extends java.lang.ClassLoadercL写自qClass loader?nbsp;

Execution engine子系l的作用Q执行classes中的指o。Q何JVM specification实现(JDK)的核心都是Execution engineQ不同的JDK例如Sun 的JDK 和IBM的JDK好坏主要取决于他们各自实现的Execution engine的好坏?br />
Native interfacelgQ与native libraries交互Q是其它~程语言交互的接口。当调用nativeҎ的时候,p入了一个全新的q且不再受虚拟机限制的世界,所以也很容易出? JVM无法控制的native heap OutOfMemory?br />
Runtime Data ArealgQ这是我们常说的JVM的内存了。它主要分ؓ五个部分—?br /> 1、Heap (?Q一个Java虚拟实例中只存在一个堆I间
2、Method Area(Ҏ区域)Q被装蝲的class的信息存储在Method area的内存中。当虚拟载某个类型时Q它使用c装载器定位相应的class文gQ然后读入这个class文g内容q把它传输到虚拟Z?br /> 3、Java Stack(java的栈)Q虚拟机只会直接对Java stack执行两种操作Q以帧ؓ单位的压栈或出栈
4、Program Counter(E序计数?Q每一个线E都有它自己的PC寄存器,也是该线E启动时创徏的。PC寄存器的内容L指向下一条将被执行指令的饿地址Q这里的地址可以是一个本地指针,也可以是在方法区中相对应于该Ҏ起始指o的偏U量?nbsp;
5、Native method stack(本地Ҏ?Q保存nativeҎq入区域的地址

以上五部分只有Heap 和Method Area是被所有线E的׃n使用的;而Java stack, Program counter 和Native method stack是以U程为粒度的Q每个线E独自拥有自q部分?br />
了解JVM的系l结构,再来看看JVM内存回收问题了—?br /> Sun的JVM Generational Collecting(垃圾回收)原理是这LQ把对象分ؓq青?Young)、年老代(Tenured)、持久代(Perm)Q对不同生命周期的对象用不同的法?Z对对象生命周期分?


如上图所C,为Java堆中的各代分布?nbsp;
1. YoungQ年MQ?br /> q? M分三个区。一个Eden区,两个Survivor区。大部分对象在EdenZ生成。当Eden区满Ӟq存zȝ对象被复制到Survivor? Q两个中的一个)Q当q个Survivor区满Ӟ此区的存zd象将被复制到另外一个Survivor区,当这个SurvivorM满了的时候,从第一 个Survivor区复制过来的q且此时q存zȝ对象Q将被复制年老区(Tenured。需要注意,Survivor的两个区是对U的Q没先后关系Q所? 同一个区中可能同时存在从Eden复制q来 对象Q和从前一个Survivor复制q来的对象,而复制到q老区的只有从W一个Survivor去过来的对象。而且QSurvivor区L一个是I? 的?nbsp;
2. TenuredQ年老代Q?br /> q老代存放从年M存活的对象。一般来说年老代存放的都是生命期较长的对象?nbsp;
3. PermQ持久代Q?br /> ? 于存N态文Ӟ如今JavacR方法等。持久代对垃圑֛收没有显著媄响,但是有些应用可能动态生成或者调用一些classQ例如Hibernate{, 在这U时候需要设|一个比较大的持久代I间来存放这些运行过E中新增的类。持久代大小通过-XX:MaxPermSize=q行讄?br />
? 个例子:当在E序中生成对象时Q正常对象会在年M中分配空_如果是过大的对象也可能会直接在年老代生成Q据观测在运行某E序时候每ơ会生成一个十兆的 I间用收发消息,q部分内存就会直接在q老代分配Q。年M在空间被分配完的时候就会发起内存回Ӟ大部分内存会被回Ӟ一部分q存的内存会被拷贝至 Survivor的from区,l过多次回收以后如果from区内存也分配完毕Q就会也发生内存回收然后剩余的对象拯至to区。等到toZ满的? 候,׃再次发生内存回收然后把幸存的对象拯臛_老区?br />
通常我们说的JVM内存回收L在指堆内存回Ӟ实只有堆中的内Ҏ动态申请分配的Q所以以上对象的q轻代和q老代都是指的JVM的HeapI间Q而持久代则是之前提到的Method AreaQ不属于Heap?br />
了解完这些之后,以下的{载一热衷于钻研技术的哥们Richen Wang关于内存理的一些徏议—?br /> 1、手动将生成的无用对象,中间对象|ؓnullQ加快内存回收?br /> 2、对象池技?如果生成的对象是可重用的对象Q只是其中的属性不同时Q可以考虑采用对象池来较少对象的生成。如果有I闲的对象就从对象池中取Z用,没有再生成新的对象,大大提高了对象的复用率?br /> 3、JVM调优 通过配置JVM的参数来提高垃圾回收的速度Q如果在没有出现内存泄露且上面两U办法都不能保证内存的回收时Q可以考虑采用JVM调优的方式来解决Q不q一定要l过实体机的长期试Q因Z同的参数可能引v不同的效果。如-Xnoclassgc参数{?br />
推荐的两Ƒֆ存检工?br /> 1? jconsole JDK自带的内存监工P路径jdk bin目录下jconsole.exeQ双dq行。连接方式有两种Q第一U是本地方式如调试时q行的进E可以直接连Q第二种是远E方式,可以q接以服? 形式启动的进E。远E连接方式是Q在目标q程的jvm启动参数中添?Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false 1090是监听的端口号具体用时要进行修改,然后使用IP加端口号q接卛_。通过该工具可以监到当时内存的大,CPU的用量以及cȝ加蝲Q还提供 了手动gc的功能。优Ҏ效率高,速度快,在不影响q行q行的情况下监测产品的运行。缺Ҏ无法看到cL者对象之cȝ具体信息。用方式很单点d下就 可以知道功能如何了,实有不明白之处可以上网查询文档?br />
2、JProfiler 收费的工P但是到处都有破解办法。安装好以后按照配置调试的方式配|好一个本地的session卛_q行。可以监当时的内存、CPU、线E等Q能具体 的列出内存的占用情况Q还可以某个类q行分析。优点很多,~点太媄响速度Q而且有的cd能无法被l入ҎQ例如我使用jprofiler时一直没有备? 成功q,M有一些类的错误?br />

]]>
վ֩ģ壺 ݳ| | | Ԫ| ˮ| | | | ʯ| | | | | ǭ| Ͳ| | | | | ߰| | | ɽ| | | ˮ| | ƽң| | | | | | ʯȪ| ˶| | Ϫ| β| | | |