JVM
文章平均质量分 66
cz-神算子
hadoop技术狂热者,熟练使用hadoop、zookeeper、hbase、mahout、hive、sqoop、flume、kafka、storm等
展开
-
jvm的参数查询列表
典型JVM参数设置格式:java -Xmx3550m -Xms3550m -Xmn2g -Xss128k-Xmx3550m:最大堆内存-Xms3550m:初始化堆内存-Xmn2g:年轻代内存。-Xss128k:每个线程的堆栈大小。-XX:NewRatio=4:年轻代与年老代的比值。-XX:SurvivorRatio=4:年轻代中E原创 2016-03-24 16:02:33 · 1304 阅读 · 0 评论 -
GC的触发时间
GC的回收是自动的,那么什么时候GC才会做回收呢?在JDK1.6中,CMS收集器的启动阈值时92%,也就是当老年代的内存达到92%时触发GC其他的收集器,等到老年代几乎被填满在进行GC在GC阶段,有个很重要的概念,safepoint点,在safepoint会执行GC还有个概念是safe region,在saferegion中,随时GC其中涉及到的3个重要的特点:原创 2016-03-24 16:20:04 · 1495 阅读 · 0 评论 -
理解GC日志
GC 堆1、GC 分为两种:Minor GC、Full GC ( 或称为 Major GC )。2、Minor GC 是发生在新生代中的垃圾收集动作,所采用的是复制算法。 a、新生代几乎是所有 Java 对象出生的地方,即 Java 对象申请的内存以及存放都是在这个地方。 b、Java 中的大部分对象通常不需长久存活,具有朝生夕灭转载 2016-03-24 16:19:39 · 606 阅读 · 0 评论 -
垃圾收集算法
标记-清除算法(Mark-Sweep)1、标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象2、在标记完成后统一回收所有被标记的对象缺点:一个是效率问题,标记和清除两个过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃原创 2016-03-24 16:16:38 · 456 阅读 · 0 评论 -
对象的访问定位
建立对象是为了使用对象,我们的Java程序需要通过栈上的reference数据来操作堆上的具体对象。由于reference类型在Java虚拟机规范中只规定了一个指向对象的引用,并没有定义这个引用应该通过何种方式去定位、访问堆中的对象的具体位置,所以对象访问方式也是取决于虚拟机实现而定的。目前主流的访问方式有使用句柄和直接指针两种。如果使用句柄访问的话,那么Java堆中将会划分出一块原创 2016-03-24 16:14:05 · 668 阅读 · 0 评论 -
对象的内存布局
在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(InstanceData)和对齐填充(Padding)。HotSpot虚拟机的对象头包括两部分信息,第一部分用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部分数据的长度在32位和64位的虚拟机(未开启原创 2016-03-24 16:13:01 · 1021 阅读 · 0 评论 -
对象的创建
Java是一门面向对象的编程语言,在Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢?虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查原创 2016-03-24 16:12:17 · 454 阅读 · 0 评论 -
JVM内存划分
2.2.1 程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完原创 2016-03-24 16:11:25 · 398 阅读 · 0 评论 -
eclipse启动时间插件
Eclipse插件开发1. 下载并安装jdk和eclipse 这里强调一下: 需要下载Eclipse for RCP and RAP Developers, 否则无法新建Plug-in Development 项目.2. 新建项目 安装好之后打开eclipse, 点击 File->NewProject。选择Plug-in Project,点击Next。新建一个名转载 2016-03-24 16:10:00 · 1035 阅读 · 0 评论 -
JVM调优总结
年轻代大小选择响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到达年老代的对象。吞吐量优先的应用:尽可能的设置大,可能到达Gbit的程度。因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用。年老代大小选择响应时间优先的应用:年老代使用并发收集原创 2016-03-24 16:09:08 · 402 阅读 · 0 评论 -
垃圾回收器
Serial收集器:1、是一个单线程的收集器,“Stop The World”2、对于运行在Client模式下的虚拟机来说是一个很好的选择4、简单而高效Serial Old收集器1、Serial收集器的老年代版本,它同样是一个单线程收集器,使用“标记-整理”算法。2、主要意义也是在于给Client模式下的虚拟机使用。3、如果在Server模式下,那么它主原创 2016-03-24 16:08:19 · 400 阅读 · 0 评论 -
GC日志分析、年轻代、老年代
堆内存Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。原创 2016-03-24 16:05:12 · 2447 阅读 · 1 评论 -
eclipse设置jvm
设置参数:-Xverify:none -Xms512m -Xmx512m -Xmn128m -XX:PermSize=96m -XX:MaxPermSize=96m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Xnoclassgc -XX:CMSInitiatingOccupancyFraction=85参数解释:-Xverify:none转载 2016-03-24 16:03:10 · 1933 阅读 · 0 评论 -
内存分配与回收策略---神算子
下面是使用Serial/Serial Old收集器下(ParNew/Serial Old收集器组合的规则也基本一致)的内存分配和回收的策略对象优先在Eden分配1、大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次MinorGC。2、执行GC后,将存活的对象分配到Survivor空间3、无法放到Survivor空原创 2016-03-24 16:20:32 · 1018 阅读 · 0 评论