假如说,
我有一个list
这个时候,我想知道这个list占了多少内存。
又或者说,它有多少kb,多少字节。
求解。。。
如果是.net java之类是算不出来的。list只是个引用,堆上面的大小及其中每个元素的大小这个都无法算出来。
难道只能自己写了么。。。T T
@临冰听雪丶:
你看下这个吧。
https://codeblog.jonskeet.uk/2011/04/05/of-memory-and-strings/
@Daniel Cai: 我想了一个办法,利用序列化
Public List<T> ReturnSuccessData(List<T> list) { //接收分割数据 List<T> returnList = new List<T>(); //将数据转换为json字符串 Var jsonData = JsonConvert(list); //得到这个json字符串的长度 var bytelength = System.Text.ASCIIEncoding.UTF8.GetByteCount(jsonData); //计算长度是否超过200KB var groupLength = (bytelength / 1024 / 200)+1; //根据计算出来的长度分割数据 int j = groupLength; for (int i = 0; i < list.Count; i += groupLength) { List<T> cList = new List<T>(); cList = list.Take(j).Skip(i).ToList(); j += groupLength; returnList.Add(cList); } //返回分割好的数据 Return returnList; }
@临冰听雪丶: 你这个只是捞出来了一个数字,而且是绝对和真正内存的开销是不一致的。
import sys
print sys.getsizeof(obj)
C# 的
https://www.cnblogs.com/supperwu/archive/2013/05/16/3082061.html
我试过了,很奇怪,student = null的时候是20几,当赋值后就变成了负数,而且如果里面一个string越长,负数越大