1、垃圾回收机制回收无用对象的内存空间,这些内存都是JVM里堆内存里的内存空间。垃圾回收只能回收内存空间,对数据库连接、磁盘IO等无能为力。。
2、垃圾回收发生的不可预知性:由于不同JVM采用了不同的垃圾回收机制和不同的垃圾回收算法,因此他有可能是定时发生,有可能是当CPU空闲时发生,也有可能是和原始的垃圾回收一样,等到内存消耗出现极限时发生,这些和垃圾回收实现机制的选择和具体的设置都有关系。虽然程序员可以通过调用对象的finalize()方法或System.gc()等方法来建议系统进行垃圾回收,但这种调用仅仅是建议,依然不能精确控制垃圾回收机制执行。。
。。。
当系统可用内存越来越少时,垃圾回收执行的频率也越来越高,从而导致系统的性能下降。。
java一共包含48个关键字。。两个保留字goto和const,,3个特殊直接量true、false和null。。
变量分为成员变量和局部变量。。
java支持的类型分为两类:基本类型和引用类型。。
基本类型包括boolean类型和数值类型。。数值类型有整数类型和浮点类型。整数类型包括byte、short、int、long、char,浮点类型包括float、double。
不是所有数据类型都可以指定直接量的通常只有三种:基本类型、字符串类型和null类型。。
具体而言Java支持如下8种类型的直接量:
1、int类型。2、long类型。3、float类型4、boolean类型5、double类型6、char类型7、String类型8、null
实际的数组元素被存储在堆(heap)内存中;数组引用变量是一个引用类型的变量,被存储在栈(stack)内存中。
当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁。。因此所有在方法中定义的变量都被放在栈内存中的;当我们在程序中建立一个对象时,这个对象将被保存在运行时数据区中,以便反复利用(对象的创建成本通常较大),这个运行时数据区就是堆内存。堆内存中的对象不会随方法的结束而销毁。即使方法结束这个对象还可能被另一个引用变量所引用(方法的参数传递时很常见),则这个对象依然不会被销毁。只有当一个对象没有任何引用变量引用它时,系统的垃圾回收机制才会再适合的时候回收它。。
如果堆内存中数组不在有任何引用变量指向自己,则这个数组将成为垃圾。该数组所占的内存将会被系统垃圾回收机制回收。因此,为了让垃圾回收机制回收一个数组所占的内存空间,则可以将该数组变量赋值为null,也就切断了数组引用变量和实际数组之间的引用关系,实际数组也就成了垃圾。。
static修饰的成员表明它属于这个类共有;而不属于单个的实例。。构造器不能定义返回值类型,其返回值类型是隐式的,返回的是类的实例。。
参数的传递:传值方法中参数的值并未改变;程序改变的是目的方法栈中的参数
长度可变的形参只能处于形参列表最后。一个方法中最多只能包含一个长度可变的形参,调用一个长度可变的形参时既可以传入多个参数,也可以传入一个数组。。