java中对象字节数_JAVA中求解对象所占字节大小

该类为cache4j缓存框架中的工具类方法,该方法实现了两个接口

接口1:计算对象在内存中所占字节数

接口2:复制对象,实现深度克隆效果,实现原理为先序列化对象,然后在反序列化对象;返回一个新的对象,达到克隆效果

package net.sf.cache4j.impl;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.ObjectInput;

import java.io.ObjectInputStream;

import java.io.ObjectOutput;

import java.io.ObjectOutputStream;

/**

*

* @version $Revision: 1.0 $ $Date:$

* @author Yuriy Stepovoy. stepovoy@gmail.com

**/

public class Utils {

/**

* 计算一个对象所占字节数

* @param o对象,该对象必须继承Serializable接口即可序列化

* @return

* @throws IOException

*/

public static int size(final Object o) throws IOException {

if (o == null) {

return 0;

}

ByteArrayOutputStream buf = new ByteArrayOutputStream(4096);

ObjectOutputStream out = new ObjectOutputStream(buf);

out.writeObject(o);

out.flush();

buf.close();

return buf.size();

}

/**

* 赋值对象,返回对象的引用,如果参数o为符合对象,则内部每一个对象必须可序列化

* @param o对象,该对象必须继承Serializable接口即可序列化

* @return

* @throws IOException

* @throws ClassNotFoundException

*/

public static Object copy(final Object o) throws IOException,

ClassNotFoundException {

if (o == null) {

return null;

}

ByteArrayOutputStream outbuf = new ByteArrayOutputStream(4096);

ObjectOutput out = new ObjectOutputStream(outbuf);

out.writeObject(o);

out.flush();

outbuf.close();

ByteArrayInputStream inbuf = new ByteArrayInputStream(outbuf.toByteArray());

ObjectInput in = new ObjectInputStream(inbuf);

return in.readObject();

}

}

例如:对象SMatrix

首先在定义类SMatrix时,必须为

public class SMatrix implements Serializable{

//***

}

一定要注意的一个问题是:所计算的对象必须要实现implements Serializable

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excel查重复_毕业季 | 如何降低论文的查重率

毕业季吾日三省吾身实验做完了吗?论文写完了吗?查重能通过吗?学术圈的前辈告诉我们,只有站在巨人的肩膀上才能看得更远。在撰写一篇论文时,为保证质量和可靠性,难免需要引用前人的成果,这也反映…

Sun过去的世界中的JDK 11和代理

使用JDK 11后,就sun.misc.Unsafe的第一种方法。 其中, defineClass方法已删除。 代码生成框架通常使用此方法在现有的类加载器中定义新的类。 尽管此方法易于使用,但它的存在也使JVM本质上不安全,正如其定义类的名称所暗示的那样。…

java中 private final_Java笔记:final与private关键字

记录一个有趣的现象,private修饰的方法子类是访问不了的,且类中所有private修饰的方法都隐式的指定为final(可以对private方法添加final修饰词,但是这并不能给该方法增加任何额外的意义),final修饰的方法是不可以被重写的。但是如…

Java,JavaFX的流畅设计风格进度栏

按照承诺,刚刚发布的Java JavaFX主题JMetro 4.6版为进度栏带来了新样式。 进度栏有两种可能的状态:确定和不确定,新的JMetro版本具有这两种状态。 在本文中,我还将详细介绍一些我在JMetro中遵守的API设计原则。 JMetro API设计原…

安卓最新系统_成纺移动校园(移动办公系统)V3.2.1 安卓最新版

成纺移动校园(移动办公系统)是额一个非常实用的办公工具。您可以使用该软件及时浏览最新的校园信息,同时涵盖许多功能,例如时间表查询,会议安排,校园地图,校车等。有需要的用户欢迎来绿色先锋网下载。 成纺移动校园简介…

java时间日期格式器_JAVA基础类库(二)-----日期、时间类和格式器

Date类public classDateTest{public static voidmain(String[] args){Date d1 newDate();//获取当前时间之后100ms的时间Date d2 new Date(System.currentTimeMillis() 10000);System.out.println(d1);System.out.println(d2);//比较d1,d2是否相等,相等返回0,大于…

pyqt 获取 UI 中组件_你想知道的React组件设计模式这里都有(上)

本文梳理了容器与展示组件、高阶组件、render props这三类React组件设计模式往期回顾:HBaseCon Asia 2019 Track 3 概要回顾随着 React 的发展,各种组件设计模式层出不穷。React 官方文档也有不少相关文章,但是组织稍显凌乱,本文就…

jvm上的随机数与熵_向您的JVM添加一些熵

jvm上的随机数与熵能否生成真正的随机数取决于系统中的熵。 有人声称,这可以通过掷骰子来保证。 其他人认为,用此主体替换OpenJDK的java.math.Random.nextInt()方法将有所帮助: public int nextInt() {return 14; }资…

typora导出word指定样式_(二)最简洁的Markdowd编辑器:Typora

(提醒:前面都是介绍和语法,想下载了就能用的直接看最后总结)大家好,半瓶醋同学又来误人子弟了。现在办公文档或者邮件的处理,一般都是用微软的office word或者邮件自带的编辑器。但是用word或者邮件自带编辑…

cc java开发环境搭建_Windows系统下java开发环境搭建

总的来说,开发环境是程序员工作的基础,没了他,IT工作就没得开展了。话不多说,今天提供的教程是Windows系统下Java开发环境的搭建,具体如下1.下载并安装JDK(JAVA Development Kit)JDK是整个java开发的核心,它…

使用数据库中的Java流制作数据透视表

来自数据库行和表的原始数据不能为人类读者提供太多了解。 相反,如果我们对数据执行某种聚合,则人类更有可能看到数据模式 在展示给我们之前。 数据透视表是聚合的一种特定形式,我们可以在其中应用排序,求平均值或求和之类的操作…

java map的keyset_Java Map keySet()用法及代码示例

此方法用于返回此映射中包含的键的Set视图。该集合由Map支持,因此对Map的更改会反映在集合中,反之亦然。用法:Set keySet()参数:此方法没有参数。返回值:此方法返回一个包含指定映射键的集合。下面的程序显示int keySet()方法的实…

asynchttpclient 超时_dnf这才是混子的毕业套装,却发现超时空漩涡不买账!

dnf这才是混子的毕业套装,却发现超时空漩涡不买账!按道理来说,光兵和帕拉丁穿这套装备去混团是最好的,结果现在超时空漩涡不要!虽然说兵法套是95最好的魂之涛,但是这个混子套属性真心弱爆,不如正…

统计多维数组php_PHP多维数组中统计元素个数

Array([0] > Array([0] > Array([0] > Array([id] > 12[name] > 1)[1] > Array([id] > 28[name] > 2).....)[1] > Array([0] > Array([id] > 121[name] > 2)[1] > Array([id] > 281[name] > 4)...))....)我想统计name对应的值出现…

mongodb web_MongoDB和Web应用程序

mongodb web当今时代是数据以非常大的速度增长的时代。 数据存储不是问题,是的,但是它的结构化和存储方式可能会增加或减少所需数据块的查找时间。 不断增长的非结构化数据的用例 脸书: 活跃用户达7.5亿,互联网用户中有三分之一…

win7亮度怎么调_揭秘极米NEW Z8X投影仪怎么样?千万不要上当?!!!!【揭秘反馈

反馈测评极米NEW Z8X投影仪怎么样?求真实点评注意事项极米NEW Z8X投影仪怎么样?靠谱真实回答 外形外观:简约时尚大气,手感不错!\n投影亮度:1080P、4K,都能做到!\n投影色彩:非常好,…

php的完整代码块,简单测试了一下php中的代码块、内部类等知识

简单测试了一下php中的代码块、内部类等知识<?php class a{public $b;public function print_result(){//普通代码块&#xff0c;但已经不是java中的代码块{$c变量;echo 普通代码块&#xff1f;;}echo $c;}//错误的语法&#xff0c;Parse error: syntax error, unexpected …

Paw 百度ai_直面落地!百度EasyDL产业智能创新大赛成果覆盖能源、交通、水利民生重业...

物体检测模型实现高压线路隐患检测、图像分类实现短视频快速剪辑和量产、文本情感分类辅助潜在心理疾病患者自发检测、图片识别车辆轮轴数监管车辆载重……每一个创想都能简单快速实现&#xff0c;没有AI开发基础的小伙伴们也能做到&#xff01;这一切都缘于百度零门槛AI开发平…

Java 9、10及更高版本:Java平台的未来

您紧跟Java平台新功能的秘密武器 自去年9月发布Java 9以来&#xff0c;感觉整个平台都经历了重大变化。 在我们甚至无法确定Java 9所能提供的一切之前&#xff0c;我们已经在标记Java 10的发布。现在&#xff0c;我们已经开始期待Java 11在2018年9月发布。 Oracle决定为Java平…

php同时抢购 代码,浅谈PHP实现大流量下抢购方案

要求要有小时分钟秒的实时倒计时的显示&#xff0c;用户端修改日期时间不会影响到倒计时的正常显示(也就是以服务器时间为准)。其实这和很多的考试等系统的时间限制功能同样的要求。总不能用ajax每秒都获取服务器时间吧&#xff0c;所以实时倒计时一定要用javascript实现。这很…