- 浏览: 678247 次
- 性别:
- 来自: 北京
最新评论
-
sparksun007:
licoolxue 写道选择封装元素那个快捷键太帅了,谢了不就 ...
我的Eclipse快捷键 -
sparksun007:
skying007 写道CTL+SHIFT+R查找资源,博主为 ...
我的Eclipse快捷键 -
sparksun007:
licoolxue 写道选择封装元素那个快捷键太帅了,谢了具体 ...
我的Eclipse快捷键 -
sparksun007:
lseeo 写道第五张图,复制好的在To里,为啥第六章图就全部 ...
JVM调优总结(六)-分代垃圾回收详述2 -
sparksun007:
284885166 写道xj20305 写道请问第2个图到第三 ...
JVM调优总结(六)-分代垃圾回收详述2
文章列表
“坚定你的信念,扔掉你的恐惧。相信你所怀疑的,但怀疑你所相信的。生活是一个谜语而不是要解决的问题。”
好久好久没写blog了,半年其实挺短的,不过发生了太多的事情,每件事都不小。
1. 买房了,装修了,累的半死。不过当住进自己家的时候,感觉还是很温馨的,不管怎么小吧,好歹也是个窝了。
2. 家里人去世了,唉......这种事情真是没有办法接受,说走了就走了,生命如此脆弱。树欲静而风不止,子欲养而亲不待...
3. 换工作了。新的环境,新的同事。很有朝气的团队,希望在这里能有自己的一片天地。只是以前积累那点技术恐怕今后用处不会太多,不过无所谓了,殊 ...
聚聚散散,人生无常。一个兄弟要回来了,另一个又要走了。田震那首《干杯朋友》,改了一点,祝福一下。可惜咱们没喝上一杯。留点遗憾也好,等你回来再喝。一路平安!保重!
兄弟你今天就要远走干了这杯酒忘掉那过去的惆怅一醉到天尽头也许你从今开始地旅程再没有停下的时候让我们一起举起这杯酒干杯啊兄弟兄弟你今天就要远走干了这杯酒天空是蔚蓝的自由你渴望着拥有但愿那无拘无束的日子将不再是一种奢求让我们再次举起这杯酒干杯啊兄弟兄弟你今天就要远走干了这杯酒绿绿的原野没有尽头像儿时的眼眸想着你为了梦想而飞翔不要犹豫不要回头期待再聚的那一天干杯啊兄弟
所谓“工欲善其事必先利其器”,程序写多了,对于快捷键总有些特别的偏爱。在众多编辑器中,Eclipse算是用的比较多,也是最熟的。
最常用(也是最爱的:))
Ctrl+’ :
自动完成提示。这个快捷键是我自己设的。Eclipse默认是Ctrl+Sapce,跟输入法冲突了。这个东东很强大,除了提示方法外,也支持自动完成的提示。比如:输入一个for后输入快捷键,能提示for方法的几种形式,以便自动完成。sysout也是平时用的比较多的。想不起来东西的时候输入这个即可。
Alt+←(→):前(后)一个编辑的页面
Alt+X:运行上次运行的程序。也是 ...
能整理出上面一些东西,也是因为站在巨人的肩上。下面是一些参考资料,供大家学习,大家有更好的,可以继续完善:)
· Java 理论与实践: 垃圾收集简史
· Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning
· Improving Java Application Performance and Scalability by Reducing Garbage Collection Times and Sizing Memory Using JDK 1.4.1
· Hotspot m ...
垃圾回收的悖论
所谓“成也萧何败萧何”。Java的垃圾回收确实带来了很多好处,为开发带来了便利。但是在一些高性能、高并发的情况下,垃圾回收确成为了制约Java应用的瓶颈。目前JDK的垃圾回收算法,始终无法解决垃圾回收时的暂停问题,因为这个暂停严重影响了程序的相应时间,造成拥塞或堆积。这也是后续JDK增加G1算法的一个重要原因。
当然,上面是从技术角度出发解决垃圾回收带来的问题,但是从系统设计方面我们就需要问一下了:
我们需要分配如此大的内存空间给应用吗?
我们是否能够通过有效使用内存而不是通过扩大内存的方式来设计我们的系统呢?
我们的 ...
JVM调优工具
Jconsole,jProfile,VisualVM
Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里
JProfiler:商业软件,需要付费。功能强大。详细说明参考这 ...
垃圾回收的瓶颈
传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full
GC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受的。这类应用可能要求请求的返回时间在几百甚至几十毫秒以内,如果分代垃圾回收方式要达到这个指标,只能把最大堆的设置限制在一个相对较小范围内,但是这样有限制了应用本身的处理能力,同样也是不可接收的。
分代垃圾回收方式确实也考虑了实时性要求而提供了并发回收器,支持最大暂停时间的设置,但是受限于分代垃圾回收的内 ...
常见配置汇总
堆设置
-Xms:初始堆大小
-Xmx:最大堆大小
-XX:NewSize=n:设置年轻代大小
-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:Su ...
以下配置主要针对分代垃圾回收算法而言。
堆大小设置
年轻代的设置很关键
JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows
Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。
典型设置:
java -Xmx3550m -Xms3550m -Xmn2g –Xss128k
-Xmx3550m:设置JVM最大可用内存为3550M。
-Xms3550m:设置 ...
分代垃圾回收流程示意
选择合适的垃圾收集算法
串行收集器
用单线程处理所有垃圾回收工作,因为无需多线程交互,所以效率比较高。但是,也无法使用多处理器的优势,所以此收集器适合单处理器机器。当然,此收集器也可以用在小数据量(100M左右)情况下的多处理器机器上。可以使用-XX:+UseSerialGC打开。
并行收集器
对年轻代进行并行垃圾回收,因此可以减少垃圾回收时间。一般在多线程多处理器机器上使用。使用-XX:+UseParallelGC.打开。并行收集器在J2SE5.0第六6更新上引入,在Java
SE ...
为什么要分代
分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。
在Java程序运行的过程中,会产生大量 ...
如何区分垃圾
上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。上面分析的堆和栈的区别,其中栈是真正进行程序执行地方,所以要获取哪些对象正在被使用,则需要从Java栈开始。同时,一个栈是与一个线程对应的,因此,如果有多个线程的话,则必须对这些线程对应的所有的栈进行检查。
同时,除了栈外,还 ...
- 2009-11-22 21:20
- 浏览 28068
- 评论(7)
可以从不同的的角度去划分垃圾回收算法:
按照基本回收策略分
引用计数(Reference Counting):
比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。
标记-清除(Mark-Sweep):
此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,同时,会产生内存碎片。
复制(Copying):
此算法把内存空间划为两个相等的区域,每次只 ...
Java对象的大小
基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。
在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大 ...
数据类型
Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。
基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress
引用类型包括:类类型,接口类型和数组。
堆与栈
堆和栈是程序运行的关键,很有必要把他们的关系说清楚。
栈是运行时的单位,而堆是存储的单位。
栈解 ...