BuggyApp——模拟JVM性能

推荐一款实用的工具:BuggyApp

下载地址:https://gitee.com/DHing/codes/b3ewz9pcfy826doaksunl95

     Buggy App是一个简单的Java应用程序,它模拟不同的性能问题,例如内存泄漏,OutOfMemoryError,CPU峰值,线程泄漏,StackOverflowError,死锁,无响应等等。

使用此应用程序,您可以模拟环境中的各种性能问题。以下是一些可以使用Buggy App的用例: 

a.在运行应用程序的同一服务器上配置并启动Buggy App以消耗大量内存。

b.您可以在Docker容器中配置并启动Buggy App,以消耗大量CPU,并查看同一主机上的其他容器是否受到影响。

c.如果要构建性能工具或监视工具,则可以使用Buggy App模拟各种性能下降,并查看您的工具是否解决了这些性能问题。

使用方式:

1. OutOfMemoryError:Java堆空间

 要生成“ java.lang.OutOfMemoryError:Java堆空间”,请使用以下参数启动Buggy App:

java -Xmx512m -jar buggyApp.jar PROBLEM_OOM

2.内存泄漏

 如果您想模拟内存泄漏而不会遇到OutOfMemoryError,请使用以下参数启动Buggy App。 

java -jar buggyApp.jar PROBLEM_MEMORY

 当使用这些参数启动Buggy App时,将消耗80%-90%的已分配内存。但这不会导致OutOfMemoryError。

3. CPU峰值

 如果您希望CPU使用率上升到80 – 90%,请使用以下参数启动Buggy App:

java -jar buggyApp.jar PROBLEM_CPU

4.线程泄漏

 如果您希望应用程序继续缓慢生成新线程,请使用以下参数启动Buggy App。

java -jar buggyApp.jar PROBLEM_THREADLEAK

当您使用这些参数启动Buggy App时,最终将生成“ java.lang.OutOfMemoryError:无法创建新的本机线程”。

5.死锁

 如果您希望应用程序遇到死锁,请使用以下参数启动Buggy应用程序。

java -jar buggyApp.jar PROBLEM_DEADLOCK

6. Stackoverflow错误

 如果您希望应用程序遇到“ java.lang.StackOverflowError”,请使用以下参数启动Buggy应用程序。

java -jar buggyApp.jar PROBLEM_STACKOVERFLOW

7.线程阻塞

 如果您想将多个线程置于BLOCKED状态,请使用以下参数启动Buggy App。

java -jar buggyApp.jar PROBLEM_BLOCKED