码迷,mamicode.com
首页 > 编程语言 > 详细

关于java中string的内存位置

时间:2017-07-26 12:42:05      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:程序   方法   部分   类型   线程   本地   共享   一个   对象   

java运行时内存分五部分:

  线程共享:堆内存、方法区(包括常量池)

  线程私有:栈内存、本地方法栈、程序计数器

 

string不是基本数据类型,那么一个string的内存位置是什么呢?一共有两种情况:

  1、string直接赋值:

    String s = "haha";

    s的引用存在栈内存中,引用指向的haha存在方法区的常量池中(先判断常量池中是否有一个haha,存在则直接指向)

  2、string对象new创建

    String s = new String("haha");

    s的引用存在于栈内存中,引用指向的haha对象,存在堆内存中(每new一次,在堆中创建一个新的haha对象)

 

总结:

  1、string类型的引用,都是存在栈内存中的;

  2、string引用指向,直接赋值存在栈内存,new出来的存在栈内存。

关于java中string的内存位置

标签:程序   方法   部分   类型   线程   本地   共享   一个   对象   

原文地址:http://www.cnblogs.com/guoliangxie/p/7238907.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!