我有班级模特:
class MySongs {
private int song_id;
private int song_likes;
private int song_plays;
private String song_artist;
private String song_title;
private String song_lyric
private String song_info;
private String song_mp3_link;
private String songs_photo_link;
private String song_date;
// with getters and setters for all variable
public int getId() {...}
public void setId(int id) {...}
//and other ...
}
现在,我希望在2000 MySongs
对象中添加更多List<MySongs>
:
int my_json_data_count = 2000;
List<MySongs> my_data = new ArrayList();
for (int i=0; i<my_json_data_count; i++) {
MySongs mysongs = new MySongs();
mysongs.setId(...);
//....
//...
my_data.add(mysongs);
}
//
my_data.size(); // 2000
数据的数量是否有限制? (对于内存)2000或3000或arrayList中的数据。
大约占用了多少内存空间?
或者根本没有,数据的数量是正常的吗?
答案 0 :(得分:3)
ArrayList
类是基于数组的实现,因此,可能项的最大数量应与数组中元素的最大数量一致。
就占用的内存量而言,这取决于存储对象的大小。存储100个对象后,如果它们太大,或者如果它们很小,则可能会存储数千个。
答案 1 :(得分:1)
如果您想知道给定对象在堆中占用多少内存,则应使用SizeOf并在对象上调用SizeOf.deepSizeOf
以获得对象的深度。
请注意,大小取决于目标JVM,如果目标JVM是32-bit JVM
,64-bit JVM
UseCompressedOops
(-XX:+ UseCompressedOops),结果确实会改变)默认情况下启用的情况是小于32 GB
的堆或禁用64-bit JVM
的{{1}}(-XX:-UseCompressedOops)。