- 博客(8)
- 收藏
- 关注
原创 内存交换区大小很重要
在sun的内存模型中,一般会有这么几个区:eden区满了之后,会触发一次Young GC,Young GC会将eden区,S0(或S1)释放不掉的对象,放入另外一个空闲的交换区S1(或S0)。即触发一次S0与S1的交换。如果一次Young GC后空闲的交换区不足以放下全部的活的对象,剩余的会被直接丢进old区,所以关注每次Young GC后old区内存的增长,以及交换区的使用率至关重要。交换区设置的过小,或者虚拟机动态调整导致交换区长时间过小,都会造成old 区内存的持续增长,直至频繁的Full GC。su
2010-07-15 09:50:00 2142
原创 如果finalize方法为空,jvm是否会将其加入回收列表?
如果一个类重写了object的finalize方法,jvm会将这个类生成的实例加入到Finalizer的链表里,这个大家都比较好理解,目的是为了让jvm去invoke实例的finalize方法。但是如果你重写了object的finalize方法,但是finalize方法是空的,情况又是如何呢,下面结合jprofile,简单做了一下测试。写两个类,MyName类只有一个say方法,Test类每隔10s生成10万个MyName的实例。package test;public class MyName { publ
2010-06-28 18:25:00 543
原创 hadoop安装
首先介绍单机模式的搭建过程:(1)下载hadoop 0.19.1版本,并解压缩到 /home/admin/hadoop目录下,修改报名为hadoop[root@localhost admin]# wget http://archive.apache.org/dist/hadoop/core/hadoop-0.19.1/hadoop-0.19.1.tar.gz[root@localhos
2010-05-29 11:15:00 523
原创 内存分析
(1)查看目前虚拟机内各个区的内存占用情况,可以使用如下的命令/opt/jdk/java/bin/jstat -gcutil -h3 $JAVA_PID 250 60 具体打印出的各个参数的意义可以google一下。 (2)查看某一天完整的内存随时间的变化情况,最好的办法是在jvm启动时里加上下面几个参数:-verbose:gc -Xloggc:/home/admin/lo
2010-05-29 11:10:00 275
原创 定位应用的CPU杀手
如果一段代码写的比较差,如多次无谓的循环,或者由于bug产生了死循环,我们可以借助linux和java的命令把它揪出来,许多应用如果经常按照下面的 方法定期进行自检,对于提高系统的处理能力大有好处。 第1步:查看目前cpu时间占用较高的线程: 首先根据top -H命令查看当前的线程信息(注意,不是进程),然后按大写的 O 键,可以选择你期望的排序字段。如可以按照cpu
2010-05-29 11:07:00 467
原创 dirty list机制分析
对文件一边读一边写的应该场景中,我们一般采用dirty list来提高写的速度,dirty list在一些数据库的设计实现里(oracle),是作为Least Recently Used Write(LRUW)来使用的,即将用户新写入的值临时保存在内存中,提交时将dirty list中的数据一次性写入文件或db中。内存中的dirty list在未写入文件或db时,对于用户的读取操作也是可见
2010-05-29 11:04:00 869
原创 finalizer类
最近项目内存比较紧张,dump内存分析时发现java.lang.ref.finalizer类比较多,finalizer类可能有人没听说过,但是finalize方法估计搞java的就没几个人不知道了,对,正如你所估计的,finalizer的作用就是虚拟机用来存储重写了finalize方法的实例。 finalizer内部实现是一个带有next和prev指针的链表,本身还维护了一个Re
2010-05-29 10:58:00 681
原创 SQL分组排序
推荐一个简洁的分组查询语句,下面这个sql可以查出表中所有按xm分组且组内bm排序为1的记录SELECT * FROM (SELECT xm, bm, RANK() OVER(PARTITION BY xm ORDER BY bm) RK FROM bmzdb) T1 WHERE RK = 1
2007-03-29 08:48:00 648
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人