java内存管理
来源:互联网 发布:淘宝卖纸巾怎么上架 编辑:程序博客网 时间:2024/06/15 22:25
1):知道 java程序--java虚拟机----操作系统 间关系
1出现虚拟机为保证与平台无关性
2 程序所要内存超出初始空间,JVM会再向OS申请内存的
3 如果java JVM已申请的内存达到规定的最大空间,程序还需要的话,出现内存溢出
开发者只关心javaJVM如果管理内存的,不管OS是怎么管理内存的。
JVM是如何管理内存的?
JVM内存= 方法区+堆区+栈区 三区内存都有限制,都会存在内存溢出问题。
方法区 = 保存类的结构(属性+方法),类静态成员等。默认64MB
堆 = 存放对象持有的数据,同时保存对原类的引用。默认64MB
栈 = 程序运行时,遇到方法,它供局部变量(基本型+引用型),调用结束,JVM自动回收。
基本型存放变量值,而引用则存放对象的引用(保存的是堆中对象的地址)
三者关系:
2)值传递和引用传递
我们知道,当一个方法调用另一个方法时,JVM会在栈中划分一个栈帧给新的方法,而方法有参数,参数值是如何从一个栈帧传到另一个栈帧呢?参数类型不同会为值传递和引用传递。
1参数是基本型:JVM会拷贝参数的值放入新的栈帧中。
2参数是引用型:JVM 拷贝引用对象在堆中的地址,放入新栈帧
中,引用之所以拷对象地址不是对象数据,为提高效率,减少
内存浪费,
3):垃圾回收机制
GC:Garbage Collection Programer手工申请内存,不用手工编码
释放,JVM自动回收不用的内存,此机制为垃圾回收机制
栈:方法调用时划分栈帧,调用结束回收栈帧,不用垃圾回收。
堆:回收不再被引用的对象数据所占用的内存。
方法区:回收不再被对象引用的类结构所占用的内存。
使用Runtime来测试内存使用情况
4):字符串在内存中的分配。
java为节省内存,提出“字符串池”概念;在内存中划分一
片区--字符串池,编译时可确定字符串常量存入池中,
5):+号在内存的操作 String 类是在不停的创建对象。
- 【Java】Java内存管理
- java内存管理-堆栈内存
- java内存管理-内存回收
- JAVA内存管理
- java内存管理
- JAVA 内存管理
- JAVA 内存管理
- java得内存管理
- Java内存管理思想
- Java内存管理思想
- Java内存管理思想
- java内存管理
- Java内存管理
- Java内存管理概述
- Java内存管理
- Java内存管理
- Java内存管理
- Java内存管理
- 教你唱千千阙歌,粤语版的
- Servlet代码生成验证码
- 普通java类得到request、session等
- 庆祝下注册CSDN
- JAVA中转码问题
- java内存管理
- servlet的俩中跳转
- vs2010 c# winform引用dotnetskin后编译不过的解决方法
- int[][] pas = new int[6][];
- SWING产生声音
- 1. 抽象工厂模式可以说是简单工厂模式的扩展,它们主要的区别在于需要创建对象的复杂程度上。
- 工厂模式
- MD5
- cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1