当前位置: 首页 > news >正文

Java程序的基本规则

java程序的基本规则

1.1 java程序的组成形式

Java程序是一种纯粹的面向对象的程序设计语言,因此Java程序

必须以类(class)的形式存在,类(class)是Java程序的最小程序

单位。Java程序不允许可执行性语句、方法等成分独立存在,所有的

程序部分都必须放在类定义里。

public static void main(String[] args)

如需某个类能被解释器直接解释执行,则这个类里必须包含main方法,而且main方法必须使用public static修饰,必须使用void声明该方法的返回值,且main方法的形参必须是字符串数组类型(String[] args是字符串数组的形式)

1.2 java程序的命名规则

Java程序源文件的命名不是随意的,Java文件的命名必须满足如下规则。

➢ Java程序源文件的扩展名必须是.java,不能是其他文件扩展名。

➢ 在通常情况下,Java程序源文件的主文件名可以是任意的。但有一种情况例外:如果Java程序源代码里定义了一个public

类,则该源文件的主文件名必须与该public类(也就是该类定义使用了public关键字修饰)的类名相同。

1.3java的垃圾回收

与C/C++程序不同,Java语言不需要程序员直接控制内存回收,Java程序的内存分配和回收都是由JRE在后台自动进行的。JRE会负责

回收那些不再使用的内存,这种机制被称为垃圾回收(GarbageCollection,GC)。

垃圾回收的特点

➢ 垃圾回收器的工作目标是回收无用对象的内存空间,这些内存空间都是JVM堆内存里的内存空间,垃圾回收器只能回收内存资

源,对其他物理资源,如数据库连接、磁盘I/O等资源则无能为力。

➢ 为了更快地让垃圾回收器回收那些不再使用的对象,可以将该对象的引用变量设置为null,通过这种方式暗示垃圾回收器可

以回收该对象。

➢ 垃圾回收发生的不可预知性。由于不同JVM采用了不同的垃圾回收机制和不同的垃圾回收算法,因此它有可能是定时发生

的,有可能是当CPU空闲时发生的,也有可能和原始的垃圾回收一样,等到内存消耗出现极限时发生,这和垃圾回收实现机制

的选择及具体的设置都有关系。虽然程序员可以通过调用Runtime对象的gc()或System.gc()等方法来建议系统进行垃圾回收,但这种调用

仅仅是建议,依然不能精确控制垃圾回收机制的执行。

➢ 垃圾回收的精确性主要包括两个方面:一是垃圾回收机制能够精确地标记活着的对象;二是垃圾回收器能够精确地定位对象

之间的引用关系。前者是完全回收所有废弃对象的前提,否则就可能造成内存泄漏;而后者则是实现归并和复制等算法的必

要条件,通过这种引用关系,可以保证所有对象都能被可靠地回收,所有对象都能被重新分配,从而有效地减少内存碎片的

产生。

➢ 现在的JVM有多种不同的垃圾回收实现,每种回收机制因其算法差异可能表现各异,有的当垃圾回收开始时就停止应用程序

的运行,有的当垃圾回收运行时允许应用程序的线程运行,还有的在同一时间允许垃圾回收多线程运行。

http://www.dtcms.com/a/121778.html

相关文章:

  • PS教学记录
  • Java 常用安全框架的 授权模型 对比分析,涵盖 RBAC、ABAC、ACL、基于权限/角色 等模型,结合框架实现方式、适用场景和优缺点进行详细说明
  • 信用卡欺诈检测实战教程:从数据预处理到模型优化全解析
  • 什么是声波,声波的传播距离受哪些因素影响?
  • 【RL系列】StepFun之Open-Reasoner-Zero
  • 机器学习 Day09 KNN算法
  • 大数据专业学习路线
  • 某团某点评mtgsig1.2 H5guard加密算法剖析
  • 深入解析Java中的栈:从JVM原理到开发实践
  • 基于IDEA+SpringBoot+Mave+Thymeleaf的系统实现
  • 量子计算入门:开启未来计算的次元之门
  • 华为数字芯片机考2025合集4已校正
  • 【安卓】APP生成器v1.0,生成属于你的专属应用
  • FRP练手:hello,world实现
  • JavaScript的可选链操作符 ?.
  • 【WPF】IOC控制反转的应用:弹窗但不互相调用ViewModel
  • 构建实时、融合的湖仓一体数据分析平台:基于 Delta Lake 与 Apache Iceberg
  • 基于机器视觉的多孔零件边缘缺陷检测(源码C++、opencv、凸包、凸缺陷检测)
  • eplan许可证的用户权限管理
  • 4.实战篇-延迟约束
  • 基于MCP协议调用的大模型agent开发02
  • 11. 盛最多水的容器
  • Linux系统之rm命令的基本使用
  • leetcode每日一题:子数组异或查询
  • 主键索引和唯一索引的区别
  • linux安装mysql常出现的问题
  • 【Linux】进程信号(下)
  • 显示背光发烫异常解析
  • SQL语法进阶篇(一),数据库复杂查询——子查询
  • Redis过期key处理、内存淘汰策略与缓存一致性策略实践方案