当我们利用编程说话进行编程时,一个必需要考虑的问题就是内存的分派和办理,只有为特定的对象分派新的存储空间,才能把新的数据添加进去,因为计较机的内存是有限的,所以需要在利用完响应的资本后将对应的空间进行释放,才能使得系统的内存让我们的Java虚拟机轮回利用
我们首先启动Java的IDE,这里以常用的Eclipse软件为例,在一个建立好了的Java工程中,点击File-New-Class,即可新建一个通俗类
在弹出来的“New Class”中,可以对欲添加的通俗类的类名和实现的接口进行界说,注重要合适Java标识符的定名法则,可以就定名为“MemoryTest”,可以选择勾选上本家儿方式“public static void main(String[] args)”
点击“Finish”按钮后,可以看到我们已经建立了一个空白的内存办理测试类,只包含了包名和类名,还包含了主动生当作的本家儿方式,具体的实现过程还要我们添加具体内容
不异内容的对象在Java里是否指标的目的统一份内存空间呢?我们用new语句建立两个字符串对象别离为s1和s2,并赋以不异的初值“abc”,此中变量名和初始值可以自行界说
在泛泛环境下,我们可以挪用Object类的Hashcode()方式来获取对象的散列码来区分在内存中的存储位置,可是对于字符串对象而言不成以,因为计较方式是按照字符进行计较的
所以需要挪用System.identityHashCode()这个当地方式,可以返回无不同的内存空间,这里可以看到打印出来的两个地址值是分歧的,表白此时Java已经为这两个同名的字符串对象分派了分歧的内存空间
当要释放内存的空间时,只需要将当前对象的值赋值为null(空),即可将它的引用从内存中删除,可以再次挪用散列码方式来获得它在内存中的地址,可以发现此时地址已经为0了,表白此时已经被垃圾收集器gc给清理了
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!