Java21对虚拟线程进行http压测使用不同的GC

这篇具有很好参考价值的文章主要介绍了Java21对虚拟线程进行http压测使用不同的GC。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JDK21默认GC是G1.
JDK21除了G1外,还可以使用ZGC(Java11预览、Java15正式版),Java21在ZGC基础上继续推出了分代ZGC,目前还是试行阶段。

开启ZGC:

java -XX:+UseZGC -jar myapp.jar

开启ZGC,并试用分代ZGC

java -XX:+UseZGC -XX:+ZGenerational -jar myapp.jar

以下的对一个启用tomcat虚拟线程的spring boot 项目分别以默认GC/ZGC/分代ZGC进行高并发测试,测试过程中,对该app占用操作系统的物理内存进行统计,然后形成统计折线图:

Java21对虚拟线程进行http压测使用不同的GC

三种GC下的压测对并发性能几乎无差别的情况下,三者的内存表现大为不同,特别是G1与两个ZGC的差异尤为明显。
虽然本次比较测试的场景比较单一,但大致能看出ZGC的垃圾回收效率比G1高。
ZGC在垃圾回收的优势主要是:

  • 低卡顿: 最大暂停时间不超过10 ms
  • 高吞吐: 短时间可以回收大量内存
  • 大堆内存支持:对于大规模的应用程序,ZGC 的能力非常有价值,可以降低碎片化的影响。
  • 分区化处理:对不同大小的内存进行分区化处理,可以加快小内存回收

代码已上传gitee文章来源地址https://www.toymoban.com/news/detail-743814.html

到了这里,关于Java21对虚拟线程进行http压测使用不同的GC的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 21 新特性:虚拟线程(Virtual Threads)

    在Java 21中,引入了虚拟线程(Virtual Threads)来简化和增强并发性,这使得在Java中编程并发程序更容易、更高效。 虚拟线程,也称为“用户模式线程(user-mode threads)”或“纤程(fibers)”。该功能旨在简化并发编程并提供更好的可扩展性。虚拟线程是轻量级的,这意味着它

    2024年02月08日
    浏览(39)
  • Java 21 正式 GA,虚拟线程真的来了

    UTC 时间 2023 年 9 月 19 日,期盼已久的 Java 21 终于发布正式版! 本文一起来看看其中最受 Java 开发者关注的一项新特性:Loom 项目的两个新特性之一的 ”虚拟线程(Virtual Thread)“(另外一个新特性是 ”结构化并发(Structured Concurrency)“,当前是预览状态),它被称之为 J

    2024年02月08日
    浏览(58)
  • Java 21 虚拟线程如何限流控制吞吐量

    虚拟线程(Virtual Threads)是 Java 21 所有新特性中最为吸引人的内容,它可以大大来简化和增强Java应用的并发性。但是,随着这些变化而来的是如何最好地管理此吞吐量的问题。本文,就让我们看一下开发人员在使用虚拟线程时,应该如何管理吞吐量。 在大多数情况下,开发

    2024年02月20日
    浏览(49)
  • 【Java】JDK 21中的虚拟线程以及其他新特性

      目录 一、字符串模板(String Templates) 二、序列化集合(Sequenced Collections) 三、分代ZGC(Generational ZGC) 四、记录模式(Record Patterns) 五、Fibers(纤程) 结论 JDK 21是Java开发工具包的最新版本,它引入了许多令人振奋的新特性,旨在提高开发人员的生产力和代码质量。在本

    2024年02月08日
    浏览(46)
  • jdk21 虚拟线程原理及使用分享

    jdk21已于北京时间9月19日21点正式发布, 其中引人注目的就是虚拟线程(Virtual Thread)随之正式发布, 不再是此前jdk19、jdk20中的预览版本。 平台线程 :java传统的线程是对系统线程的包装,为了区别于虚拟线程,因此将通过传统方式实现的线程叫做平台线程(Platform Thread) 虚拟线程

    2024年02月04日
    浏览(40)
  • 使用 wrk 对 http 接口进行压测并 计算其 TPS

    背景 : wrk 是当今最流行的 HTTP 压测工具,用于模拟高并发情况下的 HTTP 请求。wrk 使用 Lua 作为脚本语言,可以通过编写 Lua 脚本来自定义请求的参数和逻辑。它支持多线程并发请求,并提供了丰富的统计信息和报告,可以帮助你评估服务器的性能和承受能力。 本贴致力于最快

    2024年02月03日
    浏览(48)
  • 不同局域网下使用Python自带HTTP服务进行文件共享「端口映射」

    转载自内网穿透工具的文章:Python一行代码实现文件共享【内网穿透公网访问】 数据共享作为和连接作为互联网的基础应用,不仅在商业和办公场景有广泛的应用,对于个人用户也有很强的实用意义。也正因如此,大量数据共享软件被开发出来,云存储的概念也被重复炒作。

    2023年04月23日
    浏览(49)
  • 用JMeter对HTTP接口进行压测(一)压测脚本的书写、调试思路

    Mac OS下使用Homebrew安装 安装完毕之后,确保jmeter和groovy没问题 直接启动JMeter 查看groovy版本 在JMeter中使用脚本语言有BeanShell和Groovy,因为Groovy和Java更相近,所以选择Groovy。虽然以前没接触过Groovy,但是靠着IDE和官方文档、Google上手还算顺利。 因为是需要 对整条业务流程进行

    2024年02月07日
    浏览(43)
  • JMeter 5.6多个http接口进行压测

    目录 1.安装下载 2.启动JMeter 2.1新建线程组 2.2新建HTTP信息头管理器 2.3新建用户定义的变量 2.4新建临界部分控制器 2.4.1新建【创建流程实例】HTTP请求 2.4.1.1新建响应断言 2.4.2新建【查询待办任务1】HTTP请求 2.4.2.1新建响应断言 2.4.2.2新建JSON提取器 2.4.3新建【流程初审】HTTP请求

    2024年02月09日
    浏览(44)
  • 【JDK21】详解虚拟线程

    目录 1.概述 2.虚拟线程是为了解决哪些问题 2.1.线程切换的巨大代价 2.2.哪些情况会造成线程的切换 2.3.线程资源是有限的 3.虚拟线程 4.适用场景 你发任你发,我用JAVA8?JDK21可能要对这句话say no了。 现在Oracle JDK是每4个版本,推出一个长期支持版本,JDK21就是前段时间发布的最

    2024年02月05日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包