package com.taobao.matrix.tbtry;
import java.util.Date;
public class Sizeof {
public static void main(String[] args) throws Exception {
// Warm up all classes/methods we will use
runGC();
usedMemory();
// Array to keep strong references to allocated objects
final int count = 100000;
InviterBean[] objects = new InviterBean[count];
long heap1 = 0;
// Allocate count+1 objects, discard the first one
for (int i = -1; i < count; ++i) {
InviterBean object = null;
// Instantiate your data here and assign it to object
object = new InviterBean("nickkijiuyg"+i,124L,34,new Date());
//object = new Integer (i);
//object = new Long (i);
//object = new String ();
//object = new byte [128][1]
if (i >= 0)
objects[i] = object;
else {
object = null; // Discard the warm up object
runGC();
heap1 = usedMemory(); // Take a before heap snapshot
}
}
runGC();
long heap2 = usedMemory(); // Take an after heap snapshot:
final int size = Math.round(((float) (heap2 - heap1)) / count);
System.out.println("'before' heap: " + heap1 + ", 'after' heap: " + heap2);
System.out.println("heap delta: " + (heap2 - heap1) + ", {" + objects[0].getClass() + "} size = " + size + " bytes");
}
private static void runGC() throws Exception {
// It helps to call Runtime.gc()
// using several method calls:
for (int r = 0; r < 4; ++r)
_runGC();
}
@SuppressWarnings("static-access")
private static void _runGC() throws Exception {
try{
long usedMem1 = usedMemory(), usedMem2 = Long.MAX_VALUE;
for (int i = 0; (usedMem1 < usedMem2) && (i < 500); ++i) {
s_runtime.runFinalization();
s_runtime.gc();
Thread.currentThread().yield();
usedMem2 = usedMem1;
usedMem1 = usedMemory();
}
}catch(Exception e) {
System.out.println(e);
}
}
private static long usedMemory() {
return s_runtime.totalMemory() - s_runtime.freeMemory();
}
private static final Runtime s_runtime = Runtime.getRuntime();
} // End of class
分享到:
相关推荐
1. **递归计算目录大小**:对于包含多个子目录和文件的目录,该类可能提供一个方法来递归遍历所有文件并累加它们的大小,从而得到整个目录的总大小。 2. **处理大文件**:如果文件过大,`filesize()`函数可能会遇到...
在Java编程语言中,计算一个对象的大小是一个相对复杂的过程,因为对象的内存布局涉及到多个因素,包括对象头、实例字段、对齐填充等。这个主题通常与性能优化和内存管理有关,尤其是在处理大规模数据结构时。这篇...
标题"文件夹大小计算类c#"表明我们将讨论如何创建一个自定义的C#类来实现这个功能。描述中的“自己写了个”暗示了我们将探讨如何编写这样一个类或方法。 首先,我们需要创建一个名为`LenDir`的类,它可以包含一个...
"iOS计算缓存大小工具类.zip" 文件提供了一个封装好的工具类,用于帮助开发者便捷地计算iOS应用中的缓存大小。 首先,我们要理解iOS中的缓存类型。iOS系统提供了多种缓存机制,如SQLite数据库、UserDefaults、Core ...
定义一个形状类(抽象类)以及一个普通成员函数(用来重设形状大小)、两个纯虚成员函数-周长计算函数和面积计算函数,利用该类及其派生类实现圆形、三角形、矩形和梯形等图形的周长和面积的计算;主函数完成基类和...
为了计算对象大小,我们需要借助一些第三方库或者自行实现。 一个常见的第三方库是`DeepSizeOf`,它来自Eclipse Collections框架,提供了类似于C++中的`sizeof`操作。使用这个库,你可以很容易地计算出一个对象及其...
"C++矩阵计算类"的设计和实现旨在提供高效且灵活的矩阵运算,包括加法、减法、乘法、转置以及矩阵的逆运算。 首先,我们需要定义一个表示矩阵的类,它通常包含两个主要部分:数据存储和操作接口。数据存储可以使用...
2. 调用类方法:在脚本开始处调用类的初始化方法,然后在脚本结束或适当位置调用计算和显示时间的方法。 例如: ```php require_once 'YourTimingClass.php'; // 初始化类,记录开始时间 YourTimingClass::start()...
本文将深入探讨如何计算Java对象的大小,以及这个知识点在实际开发中的应用。 首先,Java对象的大小不仅仅包括其字段的大小,还包括对象头(object header)的大小,对于HotSpot虚拟机,它包含了对齐填充、Mark ...
效应量测量 (MES) 工具箱是一组 Matlab 函数,可计算各种效应量统计数据。四个主要工具箱功能涵盖了常见的分析设计,包括双样本、...二项式效应大小显示 克莱默的 V 更多详情、使用方法,请下载后阅读README.md文件
这个例子通常会使用Java内置的`sun.misc.Unsafe`类或者第三方库如`java.lang.instrument.Instrumentation`来计算对象大小。`Unsafe`类提供了访问内存的底层功能,可以获取对象头和实例数据的大小。 在`...
计算机类考研机试问题总结 本资源总结了计算机类考研机试中常见的问题,包括排序问题、日期类问题和 Hash 应用的典型特点。下面对这些知识点进行详细的解释: 一、 排序问题 在计算机类考研机试中,排序问题是...
MATLAB作为一款强大的数值计算与科学可视化软件,提供了丰富的图像处理工具箱,可以方便地进行这类工作。 首先,我们需要导入图像。在MATLAB中,我们可以使用`imread`函数读取图像。例如,对于名为"rice.png"的PNG...
java计算机硬盘大小转换(B,KB,MB,GB,TB,PB之间的大小转换) java 硬盘大小转换 数据转换 内存转换 存储大小转换
首先,我们来看如何计算一个目录的总大小。在PHP中,可以使用`scandir()`函数来遍历目录中的所有文件和子目录,然后通过`filesize()`函数获取每个文件的大小,并累加得到总大小。以下是一个示例代码,它定义在一个名...
需要注意的是,`getObjectSize()`返回的是对象的大小,不包括任何父类的实例变量,因此,如果想要计算一个对象及其所有超类的大小,需要分别计算并累加。 在“CalcSize”这个压缩包中,可能包含了实现以上步骤的源...
本文将深入探讨如何在Android全屏模式下计算键盘的大小。 首先,全屏模式在Android中的实现主要通过在AndroidManifest.xml中对Activity的声明进行设置。添加`android:windowSoftInputMode="adjustResize"`属性可以...
总之,Java提供的`File`类为我们提供了丰富的文件操作能力,通过递归遍历和累加文件大小,我们可以轻松地计算出指定目录的总大小。这样的工具在日常开发和系统维护中非常实用,帮助我们有效地管理磁盘空间。理解并...
类CPU Method :设定厂商名称 :取得厂商名称 :取得价格 :设定主频 :取得价格实现方法:根据主频的范围和厂商确定(自己自由发挥) 类Memory Method :设定厂商名称 :取得厂商名称 :取得价格...