内存分析(详解与代码)_林高禄-CSDN博客_内存分析
堆的特点:
1、堆用于存储创建好的对象和数组(数组也是对象)
2、JVM只有一个堆,被所有线程共享
3、堆是一个不连续的内存空间,分配灵活,速度慢!
栈的特点:
1、栈描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)
2、JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)
3、栈属于线程私有,不能实现线程间的共享!
4、栈的存储特点是:先进后出,后进先出
5、栈是由系统自动分配,速度快!栈是一个连续的内存空间!
方法区(又叫静态区)特点:
1、JVM只有一个方法区,被所有线程共享!
2、方法区实际也是堆,只是用于存储类、常量相关的信息!
3、用来存放程序中永远是不变或唯一的内容。(类信息【Class对象】,静态变量、字符串常量等)
静态初始化就是static,动态初始化就是new
所谓的静态和动态是相对于程序运行是而言的,静态是在程序编译时就初始化好了的,动态初始化是在程序运行是才动态分配内存空间。
//数组反转 package struct; public class day10 { public static void main(String[] args) { int[] arrays = {1,2,3,4,5}; int[] reverse = reverse(arrays); printArray(reverse); } public static int[] reverse(int[] arrays){ int[] result = new int[arrays.length]; for (int i = 0,j =result.length-1; i < arrays.length ; i++,j--) { result[j] = arrays[i]; } return result; } public static void printArray(int[] arrays){ for (int i = 0; i < arrays.length ; i++) { System.out.print(arrays[i]+" "); }