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