帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:Alloc  alloca  tool  回归测试  test  allocations  测试  Allocation  
A Regression Testing Tool For Allocations

  • 源代码名称:ByteWatcher
  • 源代码网址:http://www.github.com/danielshaya/ByteWatcher
  • ByteWatcher源代码文档
  • ByteWatcher源代码下载
  • Git URL:
    git://www.github.com/danielshaya/ByteWatcher.git
  • Git Clone代码到本地:
    git clone http://www.github.com/danielshaya/ByteWatcher
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/danielshaya/ByteWatcher
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • ByteWatcher

    ByteWatcher允许程序程序监控程序分配的字节数。

    当分配是一个关键因素时,它对于回归测试特别有用。 这通常是低延迟应用程序的情况。

    可以监视应用程序中的所有线程,并在分配超过字节数的情况下发出警告。

    ##Getting 启动:

    如果你希望最新版本的二进制文件添加到你的项目,只需转到GitHub中的最新版本,下载 jar 文件。

    或者你可以从GitHub下载源代码并使用 Maven 构建。

    老实说,考虑到代码的数量,即使复制和粘贴也应该能正常工作。

    ##Example 用法:

    如果单个线程已经分配超过 1MB 个数据,这里代码将输出一条警告消息:

    long limit =1<<20;ByteWatcher by =newByteWatcher();
    bw.onByteWatch((t, size) ->System.out.printf("%s exceeded limit: %d using: %d%n",
     t.getName(), limit, size)
    , limit);

    示例输出:

    
    Allocating Thread exceeded limit: 1048576 using: 35193128
    
    
    Allocating Thread exceeded limit: 1048576 using: 64595336
    
    
    Allocating Thread exceeded limit: 1048576 using: 80595336
    
    
    Allocating Thread exceeded limit: 1048576 using: 97217520
    
    
    Allocating Thread exceeded limit: 1048576 using: 101457304
    
    
    Allocating Thread exceeded limit: 1048576 using: 132750240
    
    
    Allocating Thread exceeded limit: 1048576 using: 148750240
    
    
    Allocating Thread exceeded limit: 1048576 using: 163709440
    
    
    
    

    创建或者销毁线程时,也可以发出警告:

    创建新线程时,这里代码将打印出所有线程

    ByteWatcher bw =newByteWatcher();
    bw.onThreadCreated(System.out::println);

    这里代码将在销毁线程时打印出所有线程

    ByteWatcher bw =newByteWatcher();
    bw.onThreadDied(System.out::println);

    类有一个有用的实用工具方法,它允许你在任何时间点查看所有分配

    ByteWatcher bw =newByteWatcher();
    bw.printAllAllocations();

    示例输出:

    
    Monitor Ctrl-Break allocated 0
    
    
    Signal Dispatcher allocated 0
    
    
    Reference Handler allocated 0
    
    
    main allocated 373176
    
    
    pool-1-thread-1 allocated 0
    
    
    Finalizer allocated 0
    
    
    
    

    默认情况下,BytesWatcher每隔 500毫秒采样一次线程。 这可以用vm选项 SamplingIntervalMillis 覆盖。

    每个采样成本通常为 336字节。 这在计算中被考虑到,因此不是属于你的程序。 有人注意到,有时这个数字有些变化。 在ByteWatcher启动时,通过运行校准例程,最大限度地减少了对客户程序的影响。 不过,除非你完全地寻找零分配,否则效果会微不足道。 即使在零分配环境中,它也不会产生影响,并且可以通过使用-Xcomp运行程序来完全缓解。



    文章标签:tool  test  测试  Alloc  alloca  回归  Allocation  回归测试  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语