首页 存档 技术 查看内容

意外的内存分配:JIT编译抖动

2018-3-30 13:00 |来自: 互联网 372 0

摘要: (点击上方公号,可快速关注) 原文:javacodegeeks 译文:ImportNew - liken 链接:http://www.importnew.com/16833.html 我在 ByteWatcher (见我最后一篇文章)工作时,碰到了一些奇怪的事情。 这是一段用来查 ...

点击上方公号,可快速关注)


原文:javacodegeeks

译文:ImportNew - liken

链接:http://www.importnew.com/16833.html

我在 ByteWatcher (见我最后一篇文章)工作时,碰到了一些奇怪的事情。

这是一段用来查找在特殊线程上分配了多少内存的真实代码片段。

return (long) mBeanServer.invoke(

name,

GET_THREAD_ALLOCATED_BYTES,

PARAMS,

SIGNATURE

);

全部上下文参见这里。

https://github.com/danielshaya/ByteWatcher/blob/master/src/main/java/ByteWatcherSingleThread.java

(ByteWatcher的工作方式是周期性地调用这个方法来监视内存分配。)

要注意的一个重点是,特别是当程序希望获得精确大小的内存分配时来调用上面的代码会引起内存分配。

该调用引起的内存分配必须从返回数字中扣除,因此我们隔离了程序引起的内存分配,例如调用meanBeanServer = 程序线程的内存分配 调用开

我注意到,这个内存分配总是336字节。然而,当我在一个循环中调用这个方法时,发现了一些有趣的东西。几乎每隔一段时间,就会分配不同数量的内存。

测试如下:

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部