①Java数据类型:
基本数据类型:4个整数类型:byte、short、int、long
2个浮点类型:float、double
1个字符类型:char
引用数据类型:String s; s=new String("Hello world"); Mouse m;
②基本数据类型在内存中:只占1块内存。引用数据类型在内存中:占2块内存
③堆内存装的是所有new出来的东西。堆内存比较大,用来动态分配内存用的。
④例子:
String s; //声明了一个String类型的应用变量,但并没有让它指向一个对象
s=new String("Helllo world"); //使用new语句创建一个String类型的对象,并让s指向它,以后可以通过s完成对其操作
⑤例子:
Dog d=new Dog();
实际上new出来的Dog在堆内存里面,变量d是对Dog这个对象的引用,d可能在堆内存里面,也可能在其它内存里面;
⑥
* 类是一个人静态的概念,他是放在代码区里面
* 对象是new出来的,位于堆内存中,只有在运行期间,才知道内存要分配多大,所以把对象放在堆内存中,堆内存比较大;如果对象不用了 ,垃圾收集器收回去;
* 类的每个成员变量在不同的对象都有不同的值(除了静态变量),而方法只有一份,执行的时候才占用内存,方法不调用就是一堆代码
⑦
问题:为什么对象位于堆内存?
因为堆内存是用来动态分配内存的,只有在运行的过程中,我们才new一个对象放在堆内存中。运行过程是指输出:java HelloWorld命 令 ,而不是javac HelloWorld.java编译命令。
⑧:局部变量:方法或语句块内部定义的变量
成员变量:方法外部、内的内部定义的变量
⑨
C c1=new C();
C c2=new C();
c1、c2都是方法里定义的变量,为局部变量,存在: 栈stack
⑩
成员变量、对象都存在: 堆heap
局部变量存在: 栈stack
static变量和字符串常量存放在: 数据块
代码存放在: 代码块
①①
使用new+构造方法,创建一个新的对象
构造方法是定义在Java类的一个用来初始化对象的函数
构造方法与类同名且没有返回值
①②
方法调用:值传递
int date=9 ;
test.change(date)
public void change(int i)
{
i=1234
}
通过change()是改变不了date最初的值的。
只有通过setDate()方法才可改变
①③
方法一旦执行完毕,由方法分配的局部变量的内存将自动消失;Dog d=new Dog();这个局部变量不是马上就消失,而是待会由垃圾收集器回收消失
①④
public Dog(String color,int leg){
this.color=color;
this.leg=leg;
}
形参和局部变量同等对待,放在栈内存中
相关推荐
JAVA内存溢出问题总结 JAVA 内存溢出问题是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用的内存大于虚拟机能提供的最大内存。内存溢出问题可以从容器和程序类两个方面进行排查,容器问题...
Linux 内存管理是操作系统核心的重要组成部分,它负责...以上只是Linux内存管理的一部分,实际上还包括页表管理、内存压缩、内存泄漏检测等多个方面。深入理解这些概念和机制对于优化系统性能和调试内核问题至关重要。
### Java内存管理总结 #### 一、Java如何管理内存 Java的内存管理主要涉及对象的分配和释放。这一过程分为两个部分:分配和释放。 **分配:** - 内存的分配是由程序通过关键字`new`来完成的,用于为每个对象申请...
堆和栈在C和C++中扮演着不同的角色,它们的区别主要体现在以下几个方面: - **数据结构与管理方式**:栈是由编译器自动管理的,而堆则是由程序员通过调用特定函数来管理的。 - **数据存储与生命周期**:栈上的数据...
总结来说,理解Linux内存运行原理对于系统管理员和开发者至关重要,它涉及到内存管理的各个方面,包括物理内存、虚拟内存、SLAB缓存机制、内存泄漏检测和分析,以及内存调优策略。熟练掌握这些知识点能帮助我们更好...
本文主要介绍如何利用UEFI环境进行内存测试的方法总结,这包括单核测试和多核测试的设计思路和步骤,以及内存映射和内存测试的详细实现过程。 内存测试的基础是内存映射。在UEFI环境下,内存映射能够提供系统中物理...
本文档将从四个方面对 Linux 内存管理进行总结:初始化过程中内存的建立及到伙伴系统的转移;伙伴系统、slab 分配器、非连续内存的管理;进程地址空间的内存管理;内存回收。 一、初始化过程中内存的建立及到伙伴...
动态内存分配是编程中一种重要的内存管理方式,它允许程序在运行时根据需要动态地请求内存,而不是在编译期间预设固定的内存空间。在C++编程语言中,动态内存分配主要通过`new`和`delete`关键字来实现。本实验报告...
### 关于Java内存泄漏 #### 一、Java内存管理机制 Java的一大特色在于其自动化的内存管理机制,这主要依赖于垃圾收集器(Garbage Collection, GC)来自动完成对象的内存分配与回收。尽管这一特性极大地减轻了...
提供的压缩包文件中可能包含了一些关于JS内存管理的老文档和文章,虽然有些信息可能过时,但它们依然可以帮助你理解早期的JS内存管理机制,对比现代JS引擎的发展,加深对内存管理的理解。 总的来说,了解JS内存管理...
JVM使用垃圾收集器来自动管理内存,主要涉及以下方面: - **垃圾收集算法**:常见的包括标记-清除、复制、标记-整理和分代收集等。 - **垃圾收集器**:包括串行收集器、并行收集器、并发收集器等,如Parallel...
在IT领域,尤其是在数据库管理与优化方面,Oracle数据库内存参数的调整是一项至关重要的技能。本文将根据提供的文件信息,深入探讨“Oracle数据库内存参数调优技术的个人总结”中的核心知识点,包括理解Oracle数据库...
总结来说,这个实验报告涵盖了操作系统内存管理的关键方面,包括内存分配策略、物理内存的伙伴系统、虚拟内存的页面替换算法,以及如何通过调整系统参数来影响内存管理性能。通过实际操作和观察,学生能够深入理解...
总结来说,内存加载DLL运行是一种高级的编程技术,涉及到操作系统内存管理、程序加载和动态链接等多个方面的知识。它允许程序在运行时动态加载和使用DLL,提供了一种灵活的代码组织和扩展方式。在理解和使用这一技术...
内存释放的重要性主要体现在以下几个方面: 1. **防止内存泄漏**:如果一个程序分配了内存但没有正确释放,这部分内存就会被"泄漏",无法被其他程序或系统使用。随着时间的推移,大量的内存泄漏会导致系统性能下降...
总结起来,C#中的内存修改是一个复杂且需要谨慎处理的主题。它涉及语言特性、内存管理机制、性能优化等多个方面。只有深入理解这些概念,才能在需要时正确、安全地进行内存修改,同时避免潜在的问题和风险。在实践中...