String 类型

 

 

String 类型_第1张图片

 

1.JConsole

    Jconsole,Java Monitoring and Management Console。

  java监控和管理控制台,从java5开始,在JDK中提供。

  用于对JVM中内存,线程、类和虚拟机的运行情况等的监控。提供了本地监控和远程监控两种功能。

  这个工具很好用,对于监控程序的内存有很大的帮助,可以帮助你检查程序是否有内存溢出风险。

2.对内存的管理和分配是很让人头痛的问题.

  JVM主要管理两种内存

                                       堆内存 (Heap Memory):是JVM虚拟机启动时创建

                          栈内存(Non-heap Memory):是在JVM堆之外的内存 

  注:栈内存包含方法区、JVM内部处理或优化所需的内存(如 JITCompiler,Just-in-time Compiler,即时编译后的代码缓存)、每个类结构(如运行时常数池、字 段和方法数据)以及方法和构造方法的代码

 

堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。

引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放。而数组&对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因,实际上,栈中的变量指向堆内存中的变量,这就是 Java 中的指针!

                   

3.String类型的存储方式

1. String内部是以char数组的形式存储,数组的长度是int类型,那么String允许的最大长度就是Integer.MAX_VALUE了,2147483647;

 又由于java中的字符是以16位存储的,因此大概需要4GB的内存才能存储最大长度的字符串。

你可能感兴趣的:(String 类型)