找出被空集合占用的内存

在平时的内存分析中发现有很大一部分集合对象在实例化后就从没有被使用过。集合类是我们平时使用最多的一种类,部分集合类在实例化时就会得到一部分空间(比如ArrayList、HashMap等)。这些空的集合实例虽然价值不大,但也有可能会浪费很多的内存空间。接下来演示一下如何去发现并解决这个问题。

案例

看一下下面这个MyValueStorage类的代码,在这个类里定义…

使用Memory Analyzer分析内存泄漏

概述

检测内存泄漏通常采用的方式是检查内存中某些对象的数量是否存在单调递增的现象。这可以通过“在线”实时监控分析的方式或者比较不同时段的内存快照来实现。然而实时监控的方案通常并不可行,尤其是在生产环境上,得考虑到因此导致的性能消耗;并且内存泄漏的产生通常也是非常偶然的,只有在某些特定条件下才会发生。这篇文章将介绍一些使用MAT发现内存泄漏的技巧。

准备工作

首先一…

使用MAT找出重复引用的jar或类

这篇文章将介绍一种处理应用中的类(或库)的重复引用以及版本冲突问题的解决方案。这在应用集成阶段非常有效。适用于如下案例:

  • NoClassDefFoundError:在classpath中有两个不同版本的同名类;
  • 集成大型产品:检查同一个版本的jar包是否被重复引入,减少内存占用。

准备工作

安装Memory Analyzer Tools,在eclipse上搜mat插件、…

在命令行执行JMeter测试计划

有时候会需要在linux的命令行上运行JMeter,简单说一下做法:

  1. 在图形界面上创建测试计划,并保存生成的test_plan.jmx文件;
  2. 将生成的test_plan.jmx文件上传到linux服务器;
  3. 在linux的命令行执行如下指令:

其中-n说明不是在图形界面下执行,-t指示了测试计划文件…

使用JMeter + PerfMon做远程监控

本文假设已经安装好了JMeter

下载插件

PerfMon并不是JMeter原生的工具。要使用这个工具还需要下载一些插件。下载地址是jmeter-plugins.org。在JMeter Plugins的下载页面可以看到如下需要下载的内容:image

下载用红框圈起来的前两个压缩包即可。

下载完成后。将第一个压缩包JMeterPlugins-Standard-1.3.1.zip解…

java注解2 – 自定义注解

这次创建一个自定义注解StopWatch,目的是用来监控Java方法的执行时间。

注解定义如下:

java注解1 – 元注解

简单整理了一下Annotation相关的内容。

元Annotation就是修饰Annotation的Annotation。

Java有四个元Annotation:@Retention、 @Target、@Documented和@Inherited。

@Retention

@Retention只能用于修饰一个Annotation定义。用于指定被修饰的Annotation…

基于JMeter进行分布式测试

我工作中的笔记本配置还可以。但是在测试一个简单的TCP连接时,发现把线程数设置为10000时,我的笔记本会很快死掉。最终实验出我的笔记本可以承受的安全线程数是5000。可是对应用的最低性能要求就是能承受1w的并发。此时可以采用基于JMeter的分布式测试方案。

如刚才提到的,要求测试应用在1w并发下的表现,而一部计算机所能承受的线程数是5000,那么需要两部计…

JMeter监听器说明

JMeter的监听器可以理解为JMeter提供的测试分析工具(或者测试结果报告)。JMeter监听器的监听范围是当前节点及其子节点。JMeter提供了多种测试监听器,这里简单说几个用过的监听器。

创建测试计划

为了演示监视器的作用,我这里做了一个简单的HTTP请求测试。

如何创建测试计划就不多说了,可以参看这篇文章:《使用JMeter

下图是线程组的配置:

thread group

下图是H…

使用JMeter

JMeter是一款基于java开发的压力测试应用。最初是为测试 Apache JServ(tomcat的前身)的性能而开发的。不久以后,JMeter也成为了jakarta的一个子项目。

安装

截至目前(20150408),JMeter最新的版本是2.13。用户可以在JMeter官网下载最新的稳定版本。官网提供了.zip和.gz两种格式的下载文件。JMeter2.13…