第四周报告

1. 分配出去的内存得不到及时地收回,就会引起系统运行速度下降,导致系统瘫痪,程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果,就是内存泄漏。

2. 在Java里面的内存分配和回收都是由Jre在后台操作的,Jre会负责收回那些不在使用的内存,这种机制被称为垃圾回收。通常Jre会提供一个后台线程来进行检查和控制,一般会在CPU空闲或内存不足时进行垃圾回收。

3. Java堆内存是一个运行时数据区,用以保存类的实例(就是对象),Java虚拟机的堆内存中存储着运行的应用所建立的所有对象,这些对象不需要通过代码显示地释放。一般来说堆内存地回收由垃圾回收来负责,所有地Jvm实现都有一个由垃圾回收器管理的堆内存。

4.当一个对象不再被引用时,内存回收它占领的空间,以便空间被后来的新对象使用。事实上。除了释放没用的对象外,垃圾回收也可以清除内存记录碎片。由于创建对象和垃圾回收器释放被丢弃的对象所占用的内存空间,内存会出现碎片。碎片是分配给对象的内存块之间的空闲内存区,碎片整理将所占用的堆内存移动到堆的一端,Jvm将整理出的内存分配给新的对象。

在我们安装Java编译工具的时候就会需要下载JDK,JRE,以及配环境等等。
    (1)JDK:java development kit(Java开发工具): JDK是Java开发环境(核心部分)
            (a)Java运行时环境,就是JVM(Java虚拟机)
                  也就说的是Jre,但是它的核心就是Jvm。在Jdk文件里面包含了Jre,在Jre的bin里面有一个Jvm.dll。虽然Jre 是Java运行时环境,但是其实际还是在Jvm上面运行的。而且Jre的bin文件里面存放的是Java类库的class文件,已经打包成Jar文件。
            (b)Java基础类库
            (c)还有就是Java开发工具
    (2)JRE:java runtime environment(Java运行时环境)
               还有一个单独运行时环境,但是不论是Jdk里面的Jre还是Jre里面都有必须有Jvm。
    (3)JVM:java virtuak machine(Java虚拟机)
            Java程序就是我们编写的代码都会生成class文件,这些class文件就是在Jvm上面运行的。但是只有Jvm还不能执行class文件,在解释class文件的时候需要调用解释所需的类库lib,而Jre中包含了lib类库。之所以Java代码可以跨平台的运行,都是Jvm的功劳,JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
1.常量池:是在编译期间被确定,并被保存在已编译的.class文件中的一些数据。它包括关于类,方法,接口中的常量,也包括字符串直接量。
2.堆内存和栈内存:
当一个方法被执行时候,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存李,随着方法的执行结束,这个方法的内存栈也将自然销毁。在程序中创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常比较大),这个运行时数据区就是堆内存。堆内存中的对象不会随着方法的结束而销毁,即使方法结束后,这个对象还可能被另一个引用变量所引用(就是方法中参数传递),这个对象依然不会销毁。只有当一个对象没有任何引用变量引用它时,系统的垃圾回收器才会在合适的时候回收它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值