JVM
文章平均质量分 70
chenjian98
从事java开发。
展开
-
jvm 垃圾收集器参数
垃圾搜集器选择参数 UseSerialGC:开启此参数使用serial & serial old搜集器(client模式默认值)。 UseParNewGC:开启此参数使用ParNew & serial old搜集器(不推荐)。 UseConcMarkSweepGC:开启此参数使用ParNew & CMS(ser原创 2016-10-13 17:22:41 · 288 阅读 · 0 评论 -
深入理解JVM之内存区域与内存溢出 诊断工具
与你的问题不同,我认为软件工程主要是用来解决问题的。有些博客认为“每个小孩都应该学习编程”,“你认为学数学只是玩玩而已?如果你有看过我的HTML5调试器的话,你会发现我是一个程序员,但我做的工作远不止数学这些”。 上面两者都同意一个观点,软件工程不只是用计算机语言写的一些只言片语。软件解决的问题诠释了程序员的价值。 解决问题的最终进展来自科学、强化清晰的头脑和我们一路以来使用的工具。原创 2015-12-29 23:06:12 · 1459 阅读 · 0 评论 -
Java类加载器深入理解
首先回顾一下,java虚拟机载入java类的步骤:java文件经过编译器编译后变成字节码文件(.class文件),类加载器(ClassLoader)读取.class文件,并且转换成java.lang.Class的一个实例,最后通过newInstance方法创建该类的一个对象。ClassLoader的作用就是根据一个类名,找到对应的字节码,根据这些字节码定义出对应的类,该类就是java.lang.C原创 2016-01-14 14:11:31 · 355 阅读 · 0 评论 -
JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释
jvm区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。 HotSpot虚拟机GC算法采用分转载 2015-12-10 19:29:31 · 660 阅读 · 0 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程原创 2016-10-14 09:50:40 · 330 阅读 · 0 评论 -
JVM03 GC收集算法 标记整理算法
标记和整理: 标记:第一阶段:和标记清除算法一样,遍历所有GC-Roots 整理:移动所有存活对象,且按次序排列,将末端内存以后的对象全部清除。 标记: 整理:原创 2016-10-14 09:16:30 · 612 阅读 · 0 评论 -
JVM02 GC收集(复制算法)
复制算法:将内存划分为2个区间:在任意时间点--所有动态分配的对象都只能在一个区间,另一个区间是空闲的。 在有效内存空间耗尽时,jvm将暂停程序运行,开启复制线程;gc将活动区间内的存活对象,复制到空闲区间,按规则排列。同时GC线程更新内存的引用地址为新的地址。 GC收集前: GC收集后: 缺点:1、浪费一半内存 2、如果存活对象太多,那复制时间太长。原创 2016-10-14 09:13:13 · 298 阅读 · 0 评论 -
JVM01--jvm内存结构与垃圾收集算法
重点:GC收集算法,监控内存溢出的方法,jvm优化方法,类加载器的方法,类的结构 一、jvm虚拟机将内存划分为6个部分:java虚拟机栈,本地方法栈,java堆,程序计数器,运行常量池,方法区 二、GC策略算法:1、引用计数算法 缺陷:循环引用的对象无法被回收 2、根搜索算法 是垃圾收集的基本问题。回收根不可到达的对象.原创 2016-10-14 09:10:04 · 278 阅读 · 0 评论 -
jvm 类初始化的条件
package com.chen.classLoad; class Superclass { static { System.out.println("super class is init"); } public static int value = 123;//初始化静态变量会导致类初始化 } class SubClass extends Supercla原创 2016-08-14 17:49:25 · 601 阅读 · 0 评论 -
JVM垃圾收集器
1、垃圾收集器大体可分为三种 :单线程,多线程,多任务。 Serial收集器:单线程收集器,收集时会停止用户线程;新生代采用 复制算法,老年代采用标记整理算法,Client模式下的新生代手收集器。 SerialOld收集器:也是单线程,是Serial的老年代版本。新生代采用复制算法,老年代采用标记整理,Client模式 ParNew收集器;多线程,Server的新生代收集器。 P原创 2016-09-25 17:46:09 · 233 阅读 · 0 评论 -
java虚拟机之JVM
前几篇我们学习了,JVM里面的运行结构,GC算法,以及各种垃圾收集器的优劣点,那么本篇我们来看下如何使用一些虚拟机性能监控工具,来监控和快速处理故障,当JVM出现一些故障时,我们通常从如下的几个方面进行着手分析,包括运行日志,异常堆栈,GC日志,线程快照(threaddump/javacore文件),堆转储快照(heapdump/hprof文件),熟练掌握这些工具,可以帮我们更好更快弄清或解决一些转载 2014-11-25 09:19:40 · 551 阅读 · 0 评论 -
java 虚拟机堆内存划分--新生代与老年代GC
摘要: 堆设置 -Xms :初始堆大小 -Xmx :最大堆大小 -XX:NewSize=n :设置年轻代大小 -XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Sur原创 2017-01-24 20:37:09 · 2137 阅读 · 0 评论