面试积累(java的内存分析)

关于java中的内存分析:

1 首先,java中的内存总体分为了四个部分,分别为stack segment,heap segment,code segment,data segment。即 栈区,堆区,代码区,数据区。

我们程序中用关键字new出来的东西都是存放在heap segment;

程序中的局部变量存放在stack segment,这些局部变量是在具体方法执行结束之后,系统自动释放内存资源(而heap segment中的资源需要java垃圾回收机制来处理);

程序中的方法,是内存中的code segment中的,而且是多个对象 共享一个代码空间区域;

static静态变量,需要放在内存中的data segment中;

2 这里介绍一下String的一些理解,String创建对象有两种方式:

分别为String s1=new String("java")和String s2="java";

前一种方式创建对象时会先在堆中创建一个java的,再让引用变量s1指向堆中的那个java,然后还要判断字符串常量池中是否存在java,如果存在就不会再在字符串常量池中创建了,如果不存在就会再在字符串常量池中创建一个java的对象;

后一种方式是先判断字符串常量池中是否存在java,如果存在的话就会直接让引用变量s2指向字符串常量池中已经创建好的那个java,如果不存在就会再在字符串常量池中创建一个

java,然后再让s2指向创建好的这个java。

原文地址:https://www.cnblogs.com/Leonar-do/p/5204659.html