易截截图软件、单文件、免安装、纯绿色、仅160KB

Java中的垃圾回收机制

  1.垃圾回收的必要性
     当对象被创建时,会在Java虚拟机中分配一块内存(内存分配-》默认值-》初始化值),在JVM的生命周期中,Java程序在不断地创建对象,如果这些对象的内存不被及时回收,会导致内存空间不足,因此要有一种措施及时回收无用对象的内存,保证内存能够被重复利用。
     在传统的编程语言中,内存回收的工作由程序完成,程序显式地为对象分配内存,显式地回收,可能导致该回收的没有回收,不该回收的反而回收了。
  2.java中的内存回收工作由JVM进程的一个称为垃圾回收器的系统级线程完成,它负责回收无用对象的内存,回收内存的过程成为垃圾回收。
  3.垃圾回收的特点
     a.只有当对象不再被任何变量引用时,它的内存才可能被回收;
     b.程序无法迫使垃圾回收器立即执行垃圾回收操作
     c.垃圾回收器在回收内存之前会调用finalize()方法,该方法有可能使对象复活,导致垃圾回收器取消回收该对象的操作。
  4.从垃圾回收器的角度看对象的状态
      a.可触及状态,只要程序中还有变量引用对象,该对象就处于可触及状态《此时垃圾回收器什么都不做》;
      b.可复活状态,程序中没有变量引用对象,在这个状态中,垃圾回收器会准备释放对象占用的内存,释放之前,调用它的和其他处于可复活状态的对象的finalize()方法,这些finalize()方法会使对象重新回到可触及状态;
      c.不可触及状态 当JVM执行完所有的finalize()方法,都不能使对象回到可触及状态时,对象就进入不可触及状态,这时,垃圾回收器会真正回收对象的内存
  5.垃圾回收的时间
      (1)程序只能够决定对象什么时候能够变为可复活状态,即在程序中不让任何变量引用该对象,但是程序无法决定垃圾回收器什么时候执行,即什么时候执行finalize()方法,什么时候让对象处于不可触及状态,什么时候回收对象的内存。
      (2)对象生命周期:从对象被创建开始,一直到没有任何变量引用该对象。
      (3)程序无法决定垃圾回收器什么时候回收无用对象的内存,垃圾回收器作为一个地优先级的线程独立运行,可以在程序中使用System


相关文档:

截取字符串(中英混合串) JAVA代码

public class SplitString {
    /**
     * @param args
     */
   
    public static void main(String[] args) {
        String str = "中Zell中国5000年,Congruations!";
& ......

JAVA排序汇总 java排序算法

 package com.softeem.jbs.lesson4;

import java.util.Random;

/**

* 排序测试类

* 排序算法的分类如下:

* 1.插入排序(直接插入排序、折半插入排序、希尔排序);

* 2.交换排序(冒泡泡排序、快速排序);

* 3.选择排序(直接选择排序、堆排序);

* 4 ......

Java序列化与反序列化

java 中的序列化与反序列化代码:
//进行序列化
 public byte[] getByteArray(String[] str)
   {
     byte[] bt = (byte[])null;
     try {
       if (str != null) {
       & ......

Java 基本语法

Java 一共8种基本类型,4种整型,2种浮点类型,1种表示unicode编码的字符单元的字符类型char,1种表示真值的boolean类型。
4种整数类型
int, 4 字节
short,2字节
long,8字节
byte,1字节
2种浮点类型
float,4字节,很少情况适合使用float,数值有一个后缀F,没有后缀的浮点数值默认为double.也可以在浮点数值后面添 ......

Java中toArray的用法探究


一.             Incident
import java.util.ArrayList;  
import java.util.List;  
public class Test {  
    public static void main(String[] args) {  
     ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号