当前位置: 首页 > news >正文

驻马店手机网站制作空间数据云网站

驻马店手机网站制作,空间数据云网站,造价师在哪个网站做继续教育,网络推广合作平台JVM社区不断增加新的GC#xff0c;最近又添加了一个新的GC#xff0c;它称为Epsilon #xff0c;是非常特殊的一个。 Epsilon仅分配内存#xff0c;但不会回收任何内存。 看起来好像不执行任何垃圾回收的GC用途是什么。 这种类型的垃圾收集器有特殊用途#xff0c;我们将… JVM社区不断增加新的GC最近又添加了一个新的GC它称为Epsilon 是非常特殊的一个。 Epsilon仅分配内存但不会回收任何内存。 看起来好像不执行任何垃圾回收的GC用途是什么。 这种类型的垃圾收集器有特殊用途我们将对其进行研究。 可以在哪里使用此灵巧的GC 性能测试 如果您正在开发对延迟要求严格且内存预算有限的解决方案那么此GC可用于测试程序限制。 内存压力测试 想知道您的应用程序提取瞬态内存需求。 如果您要构建一些纯粹的内存中解决方案我会发现这很有用。 基准标记算法。 很多时候我们希望基于对BIGO概念的理解来测试新的酷算法的真实性能但是垃圾收集器会在测试过程中增加噪音。 低垃圾 很多时候我们在算法上进行了一些优化以减少产生的垃圾而像epsilon这样的GC则有助于科学验证优化。 如何启用epsilon GC JVM工程师特别注意不要在生产中默认启用此GC因此要使用此GC我们必须使用以下JVM选项 -XX UnlockExperimentalVMOptions -XX UseEpsilonGC -Xloggc 您可能会想到的一个问题是内存耗尽时会发生什么 JVM将因内存不足错误而停止。 让我们看一些代码来测试GC 如何知道JVM进程中是否使用epsilon Java具有良好的管理API可以查询正在使用的当前GC也可以用来验证不同版本的Java中的默认GC是什么。 public class VerifyCurrentGC {   public static void main(String... args) {   var gcBeans ManagementFactory.getGarbageCollectorMXBeans();   gcBeans.stream().forEach(gc - {   out.println(format( GC Name : %s , gc.getName())); var poolNames gc.getMemoryPoolNames(); if (poolNames ! null ) { List.of(poolNames).forEach(pool - out.println(format( Pool name %s , pool))); } else { out.println( No memory pools for gc.getName()); No memory pools for gc.getName()); }   });   } } 使用以下选项运行以上代码 -XX UnlockExperimentalVMOptions -XX UseEpsilonGC VerifyCurrentGC 内存耗尽时代码的行为方式。 我将使用下面的代码来展示新GC的工作方式。 public class MemoryAllocator {   public static final int KB 1024 ; static int mbToAllocate Integer.getInteger( mb , 1000 );   public static void main(String[] args) { System.out.println(String.format( Start allocation of %s MBs , mbToAllocate));   for (var i 0 ; i mbToAllocate; i) { var garbage new byte [KB * KB]; }   System.out.println( I was Alive after allocation ); } } 使用默认的GC运行以上代码并请求5GB分配不会引起任何问题 java -Xloggc -Dmb 5024 MemoryAllocator 并且它会产生以下输出 [0.016s] [info] [gc]使用G1 [0.041s] [info] [gc]定期GC已禁用 开始分配5024 MB [0.197s] [info] [gc] GC0暂停年轻并发启动G1大量分配116M- 0M254M3.286ms [0.197s] [info] [gc] GC1并发周期 [0.203s] [info] [gc] GC1暂停备注20M- 20M70M4.387ms [0.203s] [info] [gc] GC1暂停清理22M- 22M70M0.043ms [1.600s] [info] [gc] GC397并发周期6.612ms [1.601s] [info] [gc] GC398暂停年轻并发启动G1混合分配52M- 0M117M1.073ms [1.601s] [info] [gc] GC399并发周期 分配后我还活着 [1.606s] [info] [gc] GC399暂停备注35M- 35M117M0.382ms [1.607s] [info] [gc] GC399暂停清理35M- 35M117M0.093ms [1.607s] [info] [gc] GC399并发周期6.062ms 让我们添加一些内存限制 java -XX UnlockExperimentalVMOptions -XX UseEpsilonGC -Xloggc -Xmx1g -Dmb 5024 内存分配器 [0.011s] [info] [gc]可调整大小的堆 从253M开始最大1024M步长128M [0.011s] [info] [gc]使用TLAB分配 最高4096K [0.011s] [info] [gc]启用了弹性TLAB 弹性1.10倍 [0.011s] [info] [gc]启用了弹性TLAB衰减 衰减时间1000ms [0.011s] [info] [gc]使用Epsilon 开始分配5024 MB [0.147s] [info] [gc]堆已保留1024M已提交253M24.77已使用52640K5.02 [0.171s] [info] [gc]堆已保留1024M已承诺253M24.77已使用103M10.10 [0.579s] [info] [gc]堆已保留1024M已落实1021M99.77已使用935M91.35 [0.605s] [info] [gc]堆已使用1024M已承诺1021M99.77已使用987M96.43 由于java.lang.OutOfMemoryError而终止Java堆空间 此特定运行导​​致OOM错误可以很好地确认1GB之后该程序将崩溃。 真正的多线程程序也具有相同的行为请参考MultiThreadMemoryAllocator.java以获取示例。 单元测试可用于测试此特殊GC的功能。 我认为Epsilon将来会发现更多用例和采用情况这绝对是增加JVM覆盖率的好一步。 所有代码示例均可用Github回购 如果您喜欢该职位则可以在Twitter上关注我 。 翻译自: https://www.javacodegeeks.com/2019/08/jvm-with-no-garbage-collection.html
http://www.zqtcl.cn/news/129639/

相关文章:

  • 网站建设考级百度怎样可以搜到自己的网站
  • 自助建站免费自助建站网站广州企业网站
  • 常德论坛尚一网唐山seo网络推广
  • 网站建设预付流程网站设计风格的关键词
  • 常德网站制作怎么做自己的网页
  • 做的网站为什么图片看不了wordpress循环该分类子分类
  • 源码出售网站怎么做一个产品的网络营销方案
  • 安丘营销型网站建设国外教育网站模板
  • 做网站案例百度小说排行榜前十
  • 东昌网站建设公司上传到网站去的文档乱码
  • 如何制作自己的网站链接教程网络营销seo招聘
  • 网站制作资料收集wordpress资源网模板
  • 随州网站设计开发服务做网站制作步骤
  • 东莞凤岗做网站黄山旅游攻略住宿
  • 网站开发常用插件免费库存管理软件哪个好
  • 河池网站开发工程师招聘网如何做品牌运营与推广
  • 做网站运营难吗零基础网站建设教程
  • 深圳蚂蚁网络网站建设wordpress电影主题
  • 网站域名收费吗搜索引擎不收录网站
  • 海兴网站建设价格wordpress替代软件
  • 做网站哪家服务器好小区物业管理系统
  • 上海推广网站公司网站建设首选
  • 网站建设行业分析报告网站建设视频教程
  • 服装网站建设图企业网站建设开题报告是什么
  • 建设外贸商城网站制作网站建设的中期目标
  • 网站定做地方门户网站带手机版
  • 佛山网站建设哪家评价高系统开发报价清单
  • 东莞道滘网站建设做h游戏视频网站
  • 江西营销网站建设公司网站建设 意义
  • 公司网站怎么自己做织梦品牌集团公司网站模板(精)