有一种解决方法,但我的程序工作的“简单”方式是将大量文本放入字符串变量中。大型数组和内存使用
我会有大约644个对象,每个对象都有自己的String变量。这些变量中的每一个都包含大约9,240个字符(包括空格)。这太多了吗?
有一种解决方法,但我的程序工作的“简单”方式是将大量文本放入字符串变量中。大型数组和内存使用
我会有大约644个对象,每个对象都有自己的String变量。这些变量中的每一个都包含大约9,240个字符(包括空格)。这太多了吗?
在默认情况下,java字符是Unicode,所以它们的大小是2B。现在:
2B * 9,240 chars = 18480B = ~18KB
然后
18480B * 644 variables = 11901120B = ~11MB
由所有String
对象占用的总内存为11MB〜。
如果你没有一个老64MB RAM,我认为这是可以接受
Java字符串占用的内存多于它包含的字符占用的字节数的简单加法。 –
@JunedAhsan我知道,这只是一个例子,即使他们采用5B而不是2,它也不会成为问题,因为现代RAM有至少512MB的可用空间 – BackSlash
简单的计算表明,这种对象所需的总空间将小于12 MB - 不是最现代的计算机上的大量内存系统,而不包括嵌入式Java平台。要进行计算,请将字符数乘以2(因为Java的char
是16位数字)。
试试看看... – hexafraction
你是什么意思的“太多”? 644 * 9240 * 2是11,901,120 – CPerkins
如果您看到三根毛发,这是否太多?这取决于它是否在某人的头上,或者在某人的汤里;-) – dasblinkenlight