`
itsoul
  • 浏览: 218018 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java随笔(二)

阅读更多


1、类的加载
   类的加载分为隐式加载和显示加载,通常我们隐式加载用的比较多,如:Test obj=new Test();这样jvm就通过classpath找到Test.class路径,加载到内存,不过jvm在加载前会检查该类是否存在内存中,如果存在就不加载了;其次就是显示加载了,如:
Class c = Class.forName("Test"); 
Test obj= (Test)c.newInstance();  通过forName显示的把类加载到内存,并通过newInstance()得到实例,这样我们就可以用obj对象了。

   Class 的 forName() 方法还有另外一种形式: Class forName(String s, boolean flag, ClassLoader classloader) , s 表示需要加载类的名称, flag 表示在调用该函数加载类的时候是否初始化静态区, classloader 表示加载该类所需的加载器。如下用的例子:
Test test = new Test();//Test 类为自定义的一个测试类; 
ClassLoader cl = test. getClass().getClassLoader(); // 获取 test 的类装载器; 
Class c = Class.forName("TestClass", true, cl); 
   
    如果不用jvm的加载机制,可以自定义加载,如:
URL url = new URL("file:/d:/test/lib/"); 
URLClassLoader urlCL = new URLClassLoader(new URL[]{url}); 
Class c = urlCL.loadClass("TestClassA"); 
TestClassA object = (TestClassA)c.newInstance(); 

注意:在加载类的时候首先检查是否有static成员,如果存在就先给static分配内存空间并初始化,如果没有初始化值,就默认值,对象为null,整形为0;然后再初始化其他成员,最后加载构造函数;static成员如果存在不会重新分配内存,整个过程只会初始化一次。


2、jvm垃圾回收机制
   jvm垃圾回收功能作为一个守护线程运行在后台,jvm垃圾回收是非常消耗性能的,jvm一般只会在内存不够用的时候才会去回收并清空垃圾。jvm垃圾回收算法很多,如引用计算法、追踪算法、拷贝算法、迭代算法等;我觉得引用计算法和追踪算法效果可能会更高点。一般来说,堆中的每个对象对应一个引用计数器。当每一次创建一个对象并赋给一个变量时,引用计数器置为1。当对象不在引用或出了作用,计算器就减1,当为0的时候,这个对象就满足了垃圾回收条件了; 追踪算法,当垃圾扫描的时候发现某个对象不可达或者在栈中没reference这个时候垃圾回收就能回收它了。







  
分享到:
评论

相关推荐

    Java完整随笔(学习)

    "Java完整随笔(学习)"可能包含了一系列关于Java编程的基础到高级概念的笔记,是学习Java的好资源。以下是一些可能涵盖的重要知识点: 1. **Java基础**:这部分可能包括了Java的基本语法,如变量、数据类型、...

    Java学习随笔6(Debug).docx

    Java 调试技术概述 Java 调试是指使用程序调试工具来检查和纠正 Java 程序中的错误和异常。调试是软件开发过程中不可或缺的一步,它可以帮助开发者更好地理解程序的执行流程,从而提高程序的质量和可靠性。 Debug...

    java记录随笔

    Java 记录随笔 Java 记录随笔是关于 Java 软件架构设计的笔记,涵盖了软件架构的基本原则、当前流行的技术、数据库存储结构、Web 界面用户接口层、业务层架构、持久层技术、XML 结构化信息传输和存储的重要性等多个...

    Java学习随笔5(方法)

    Java中的方法是编程中至关重要的概念,它封装了一段可重复使用的代码,使得程序更加模块化,提高了代码的复用性和可读性。方法的定义和调用是编写Java程序的基础。 方法的定义通常包括访问修饰符(如public)、静态...

    【Java - 框架 - Knife4j】随笔

    【Java - 框架 - Knife4j】随笔 在Java Web开发中,文档的生成与维护是一项重要但繁琐的工作。Knife4j,作为一款专门为Java RESTful API设计的文档增强工具,它极大地简化了这个过程,为开发者带来了诸多便利。本篇...

    JAVA笔记随笔

    之前上传了JAVA笔记1 那么这次是JAVA笔记2 衔接上一次的

    Java学习随笔7(进制).docx

    在Java中,二进制数通常以`0b`开头,比如`0b1001`;八进制数以`0`开头,如`0123`;十六进制数以`0x`开头,如`0x1AB`。需要注意的是,虽然输入时可以使用这些特定的前缀表示不同进制的数字,但打印出来的结果始终是十...

    Java学习随笔4(数组)

    Java中的数组是一种基础且重要的数据结构,用于存储同种数据类型的多个值。数组提供了一种高效的方式来管理和操作一组数据,可以是整数、浮点数、字符或自定义对象。在Java中,数组的定义有两种格式: 1. `数据类型...

    基于Java与跨平台技术的crostitch涂鸦随笔设计与实现源码

    本项目是一款基于Java和跨平台技术的crostitch涂鸦随笔设计与实现源码,包含65个文件,其中包括30个Java源文件、16个PNG图片文件、7个JavaScript文件、2个XML文件、1个Git忽略文件、1个Markdown文件、1个Maven项目...

    java课堂随笔

    java课堂随笔,我这还有很多,有需要的话可以联系我,我会为大家提供很多的资料

    深入Java虚拟机第二版chm英文

    《深入Java虚拟机第二版》是一本深度剖析Java虚拟机(JVM)的权威著作,其英文版以CHM(Microsoft Compiled HTML Help)格式呈现,为读者提供了方便的电子阅读体验。CHM文件是一种常见的帮助文档格式,它将HTML页面...

    Java学习随笔3(IDEA的概述和功能).docx

    二、IDEA的项目结构 在IDEA中,项目(Project)是最顶层的组织单位,它可以包含一个或多个模块(Module)。模块是项目中的独立部分,每个模块可以负责特定的业务功能。包(Package)则用于进一步组织类(Class),...

    分享Java相关的东西 - Java安全漫谈笔记相关内容.zip

    JavaThings - Java安全漫谈笔记相关《Java安全漫谈》是我在写的一点Java学习相关的随笔,不是很严谨,也不是啥高。这个存储库主要是记录并整理一下,附加一些代码。Java 安全漫谈目录Java安全漫谈 - 01.Java的动态...

    TT随笔二 TInit以及TMap

    本篇随笔“TT随笔二 TInit以及TMap”将探讨这两个主题,聚焦于一个特定的初始化过程(TInit)和一种数据结构(TMap)。 首先,让我们来看看TInit。在很多编程语言中,初始化是一种确保对象或变量在使用前处于预定...

    ubuntu搭建Java项目运行环境-随笔记录.rar

    在本文中,我们将深入探讨如何在Ubuntu操作系统上搭建一个完整的Java项目运行环境,包括安装Java Development Kit (JDK) 1.8、MySQL 5.7数据库服务以及Apache Tomcat 9应用服务器。这个过程对于任何希望在Linux环境...

    Java代码调用HTML5中的JS函数算法

    在现代Web应用开发中,Java和JavaScript经常协同工作,实现前后端交互。Java代码调用HTML5中的JS函数算法是一项关键技术,它使得服务器端能够直接操纵客户端的网页元素,提高用户体验,同时也为复杂业务逻辑提供了...

    【Java-框架-SpringSecurity】单点登录(认证和授权)- 随笔

    SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理,包括认证和授权。它提供了全面的安全控制,从简单的密码编码到复杂的访问控制策略,为开发者提供了丰富的功能。本随笔将深入探讨...

    瓜哇夜未眠Java程序员的心声

    作者是享誉国内外的Java高手,除了技术相关的文章之外,他也没有僭越自己的专业,随笔中所提及的都是软件产业里的甘苦点滴。不眠之夜,一本蔡学镛的《Java夜未眠》恰能适应你的心情,就像一杯清香醇厚的咖啡,让孤独...

    深入Java虚拟机第二版清晰版(带书签)

    《深入Java虚拟机第二版》是一本深受Java开发者喜爱的经典著作,它详尽地剖析了Java虚拟机(JVM)的工作原理,为程序员提供了深入了解Java平台核心机制的宝贵资料。这本书以其清晰的版面和精心设计的书签,极大地...

    JAVA网站流量统计管理系统(源代码+论文)

    整个系统实现了我的相册,包括的功能模块有文件上传模块,数据统计发送模块,免费资源下载模块,随笔流量统计模块,网址大全部分。进入这个网站,我们可以自由的发送数据统计,随心所欲的到流量统计进行交流灌水,还...

Global site tag (gtag.js) - Google Analytics