性能测试-GC问题整理】的更多相关文章

年轻代与老年代的调优(笔记整理) 几个常见名词 年轻代(young 区)从年轻代空间(包括Eden和Survivor 区域)回收内存被称为 Minor GC空间太小可能导致对象直接进入 old区 .如果old区 满了,会触发full gc.但也不能过大,过大会引起回收耗时过长,导致应用阻塞. 老年代(old 区)从老年代GC称为Major GC空间过小会产生old区小碎片,放不下大对象,引起频繁full gc.如果用了缓存,old区也要适当大些,同时缓存不应无限增长. 存活区(Survivor)…
1 GC类型 1 )YGC  一般情况下,当新对象生成,并且在Eden申请空间失败时,就好触发YGC ,堆Eden区域进行GC,清除非存活对象,并且把尚且存活的对象移动到Survivor区.然后整理Survivor的两个区. 2) Full GC  对整个堆进行整理,包括Young.Tenured和Perm.Full GC比Scavenge GC要慢,因此应该尽可能减少Full GC. 2 GC触发条件 GC类型 触发条件 触发上下文 YGC eden空间不足 清空Eden+from survi…
Java GC简介 什么是 GC ? Java程序不用像C++程序在程序中自行处理内存的回收释放.这是因为Java在JVM虚拟机上增加了垃圾回收(GC)机制,用以在合适的时间触发垃圾回收. 你都了解哪些垃圾收集算法 ? 引用计数法,  根搜索法,  标记-清除算法,   复制算法,   标记-压缩算法,   分代收集算法 什么是引用计数法 ? 当引用了某个对象A, A的引用计数器就加1; 当一个引用失效时, 就减1. 只要对象A的引用变为0, 就说明对象A就不可能再被使用(因为没有引用了啊).,…
基本回收算法 1. 引用计数(Reference Counting)比较古老的回收算法.原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数.垃圾回收时,只用收集计数为0的对象.此算法最致命的是无法处理循环引用的问题.2. 标记-清除(Mark-Sweep)此算法执行分两阶段.第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除.此算法需要暂停整个应用,同时,会产生内存碎片.3. 复制(Copying)此算法把内存空间划为两个相等的区域,每次只使用其…
本篇为Jmeter+jenkins+Ant方式执行性能测试 1.设置JDK,ANT环境变量: 2.build.xml文件: <?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-test" default="run" basedir="."> <tstamp> <format propert…
最近两周在研究jmeter+Jenkin的性能测试平台测试dubbo接口,分别尝试使用maven,ant和Shell进行构建,jmeter相关设置略. 一.Jmeter+jenkins+Shell+tomcat 安装Jenkins,JDK,tomcat,并设置环境变量,安装在Jenkins中performance-plugin插件. 1.准备测试脚本和测试数据,拷贝至Jenkins的workspace的对应的项目工作目录下: 2.Jenkins设置 1)添加构建参数 2)构建脚本 ##!/bin…
主要基于jmetet工具 有任何疑问直接留言,可以相互讨论 线程组菜单: 线程数:并发数量Rame-Up时间(秒):多久跑完线程数,比如线程是10,Rame-Up时间是10秒,就是10秒内跑完10个线程,1秒一个循环次数:让上面的线程数和Ramp-Up循环跑多少次,延长并发时间,总请求数 = 线程组*循环次数调度器:设置测试持续时间和延迟启动时间,可以用来做负载测试,长时间运行 聚合报告结果: Label:请求菜单的名称样本:总共请求数平均值:平均响应时间异常%:测试出现的错误请求数量百分比,出…
文章目录 堆的回顾 串行收集器 并行收集器 ParNew(par-并行的缩写,new-新生代,所以只是新生代并行) Parallel收集器 参数设置 -XX:MaxGCPauseMills -XX:GCTimeRatio CMS收集器 CMS收集器 CMS运行过程比较复杂,着重实现了标记的过程,可分为 特点 有关碎片 -XX:+ UseCMSCompactAtFullCollection -XX:+CMSFullGCsBeforeCompaction -XX:ParallelCMSThreads…
寻找垃圾对象的算法:1. 引用计数(无法处理循环引用) 2. 根寻法(被广泛引用在gc算法中) 清理垃圾的算法: 1. 标记复制  2. 标记清理  3. 标记整理 分代算法的好处: 1. 分代处理,可以减少一次处理的内存大小,减少停顿时间. 2. 不同的代有不同的特点,再加上有针对性的gc算法和代码优化,整体的性能更好: 年轻代特点是分配快,对象存活时间短,所以采用标记复制时间消耗不会太高,效率高.优化手段就是减少分配需求的速度,减少对象的存活时间,这样使得youngGc频率和停顿都降低,也减…
运行时数据区域 线程私有 程序计数器 正在执行的字节码指令的地址(native方法时为undefined) Java虚拟机栈 存储栈帧(局部变量表,操作数栈,动态链接,方法出口)OOM,StackOverflowError 本地方法栈 与虚拟机栈类似,是native方法的栈 线程共享 Java堆 存放对象和数组 OOM 新生带 Eden Survivor * 2 老年代 方法区(永久代)存储已被虚拟机加载的类信息.常量.静态变量 OOM 运行时常量池 方法区的一部分,编译器生成的字面量和符号引用…