java怎么获取一个对象所占的内存类似于c的sizeof

java怎么获取一个对象所占的内存类似于c的sizeof,第1张

没有,你的自己去写方法。stringgetbyte();这个些方法可以帮你计算占用空间问题。

其他的数据类型我们都知道他们所占的大小比如int

4个自己char

1个字节等。

内存中占用多少字节是不会让你轻而易举获取的。如果想要知道一个数据在内存中的大小,建议你看看JVM相关规范的书,对象在内存的大小不是不能计算,因为这不仅仅是一个数据,数据存放相关的信息,以及此数据可能调用的方法,以及此数据本身的类型信息,以及数据在内存中的堆内存中的索引信息,以及存放这个索引的内存信息,以及你这个数据类型中引用的常量池中的信息。。。等等等不可能让你准确知道。因为内存是不断更新的,垃圾会被不断回收,回收算法的执行,数据在内存中的位置也会发生相应的移动。严格的说指定一个类型的数据除了基本类型外,其他都是不连续的。如果楼主用过C或者C++的比如说链表的结构,现在的问题就好比你想知道一个具体链表占了多大内存。呵呵,水平有限,不能准确回答你要的结果。

你要实现的这个可能跟SpringMvc的关系不是很大。

你要达到的目的其实就是在jvm启动的时候把数据库数据加载一份到内存,一个静态变量和一个静态初始化块就可以搞定你的问题,这两者都是在类加载的时候初始化一次,像前面回答的一样,你可以用一个HashMap搞定。稍微具体来说,一个静态变量

public static final  Map<key,value> cache=new  HashMap<key,value>()

static {

cache=请求数据库 *** 作

}

key你自己加,String还是int都行,value是你数据库的结构,可以写个实体。获取的时候直接cacheget(key)就可以了。

java如何从数据库读取数据并写入txt文件:

将数据查询出来放在list中,然后写入文件。

给你个写入的类,查询数据自己如果能搞定最好了。

FileWriter fileWriter=new FileWriter("c:\\Resulttxt");

int [] a=new int[]{11112,222,333,444,555,666};

for (int i = 0; i < alength; i++) {

fileWriterwrite(StringvalueOf(a[i])+" ");

}

fileWriterflush();

fileWriterclose();

上面例子中的a也可以是list。

java中不建议直接获取字符串内存地址,因为java不像c语言,获取内存地址是C语言的强项,java的弱项。但是java内存地址还是有一个应用场景,就是判断两个字符串内存地址是否相等来判断是否是同一个对象,用双等号“==”来比较的。参考代码如下:

public class Test01 {

/

@param args

/

public static void main(String[] args) {

// TODO Auto-generated method stub

String str1="abc";

String str2=new String("abc");

Systemoutprintln(str1 == str2);//输出false

}

}

hashCode()返回的是JVM中地址的哈希码,而不是JVM中的地址,要想得到str在物理内存中的真实地存,那只有用JNI技术调用c/c++去实现,否则无能为力,因为java超不出JVM,而JVM对物理内存地址是“不可见”的,否则java中不就有了指针,而去直接 *** 作内存了,当然这是与java语言相违背的。这些只是我个人见解,说不定还真有高手直接用java语言得到了物理内存中的地址了呢。

以上就是关于java怎么获取一个对象所占的内存类似于c的sizeof全部的内容,包括:java怎么获取一个对象所占的内存类似于c的sizeof、java怎么获得数据在内存中长度、java如何将从数据库取出的数据预先存入到内存等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9670679.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存