java虚拟机在执行字节码时还进行其他一些内置的安全机制的操作。
1.类型安全的引用转换
2.结构化的内存访问(无指针算法)
3.自动化垃圾收集(不必显式地释放被分配的内存)
4.数组边界检查
5.空引用检查
java程序只能使用类型安全,结构化的方法去访问内存
这样可以避免黑客知道一个类装载器在内存中的位置,赋予一个指针指向那块内存,从而对类装载器的数据进行操作,而达到破坏安全系统的目的。
未指明运行时数据空间在java虚拟机内部是怎样分布的
运行时数据空间是指一些java虚拟机用来存储一个运行时java程序所需的内存空间。包括:java栈(每个线程一个),一个存储字节码的方法区,以及一个垃圾收集堆(用来存储由运行的程序创建的对象)。java虚拟机规范并未决定使用什么数据结构来表示运行时的数据空间,并且存放在内存中的哪个位置。这样,黑客就不能够凭借class文件中的内容,知道内存中数据的内存布局。这样,即使能够突破java虚拟机的内存访问限制,也会无法找到他们想找到的内容。但是可以使用本地方法来达到破坏内存的目的。
异常的结构化错误处理
当一个违反安全的行为发生时,java虚拟机会做一些异常的结构化处理,java虚拟机将抛出一个异常或者错误,而不是崩溃。这个异常或者错误将导致这个线程死亡,而不是整个系统陷入瘫痪。异常机制使程序能够将控制从发生异常的地方转到处理这个异常的情况。
安全管理器和java api
java安全模型的前三个组成部分-类装载器体系结构,class文件检验器和java内置的安全特性一起达到一个共同的目的:
保持java虚拟机实例和它正在运行的应用程序的内部完整性,使得它们不受恶意或者有漏洞的代码侵犯。
java安全模型的第四部分:安全管理器:主要用于保护虚拟机的外部资源不被虚拟机内运行的文件或者有漏洞的代码侵犯。
安全管理器是一个单独的对象,在运行的java虚拟机中,它在访问控制--对于外部资源的访问控制--中起中枢作用。
安全管理器负责两个方面的工作:
1)说明一个安全策略
2)执行这个安全策略
java安全模型的不足
无法阻止恶意移动代码不断分配内存直到内存耗尽
无法阻止恶意代码不断生成线程
其实不仅是恶意代码,我们自己写代码的时候也要避免不断分配内存和不断生成线程的现象的产生。
分享到:
相关推荐
3.5 java虚拟机中内置的安全特性 3.6 安全管理器和java api 3.7 代码签名和认证 3.8 一个代码签名示例 3.9 策略 3.10 保护域 3.11 访问控制器 3.11.1 implies()方法 3.11.2 栈检查示例 3.11.3...
- **Java虚拟机内置的安全特性**:JVM提供了许多内置的安全特性,例如权限检查、动态代码生成限制等。 - **安全管理器和Java API**:安全管理器允许开发者自定义安全策略,Java API提供了用于加密、数字签名等功能的...
Java虚拟机是Java程序执行的平台,它提供了“一次编写,到处运行”的特性。在桌面系统中,我们通常使用标准的Java虚拟机。然而,Android因其独特的操作系统需求,采用了自己的虚拟机实现。 **Dalvik虚拟机** ...
《Java虚拟机规范 Java SE7》是Java开发者的重要参考资料,它详细定义了Java程序如何在各种平台上运行,以及Java虚拟机(JVM)的工作机制。Java SE7版本引入了许多新特性,增强了平台的效率和可靠性。以下是这个规范...
#### Java虚拟机的关键特性 - **自动垃圾回收**:JVM自动管理内存,通过垃圾回收机制(Garbage Collection)自动释放不再使用的对象所占有的内存空间,大大减轻了开发者的负担。 - **异常处理**:JVM提供了一套...
3.5 Java虚拟机中内置的安全特性 3.6 安全管理器和Java API 3.7 代码签名和认证 3.8 一个代码签名示例 3.9 策略 3.10 保护域 3.11 访问控制器 3.11.1 implies()方法 3.11.2 栈检查示例 3.11.3...
#### Java虚拟机的职责与特性 Java虚拟机(JVM)是Java技术的核心组件,其主要任务包括: - **装载class文件**:负责加载并解析Java字节码文件。 - **执行字节码**:解释执行字节码指令,或者通过即时编译器将其...
- **Java虚拟机内置的安全特性**:包括但不限于权限检查、沙盒模型等,旨在保护系统免受恶意代码攻击。 - **安全管理器和JAVA API**:安全管理器接口允许开发者定制安全策略,通过设置`System.setSecurityManager()...
总结来说,用Go编写Java虚拟机是一个挑战性的项目,涉及到对Java字节码、Go语言特性和JVM内部机制的深入理解。这样的实践不仅可以加深对Java和Go两者的认识,也能锻炼编程技巧,尤其是处理跨语言交互和高效内存管理...
Java虚拟机(JVM)是Java语言的核心组成部分,它是Java程序得以运行的平台。JDK(Java Development Kit)则是开发和运行Java应用程序的完整工具集,包含了JVM、Java编译器、调试器、文档和其他必要的工具。在JDK1.5...
Java虚拟机规范(Java SE 7)是Java开发的关键组件之一,它定义了Java程序如何在各种不同平台上运行。这个规范详细阐述了Java虚拟机(JVM)的内部工作原理,包括类加载、字节码执行、内存管理、垃圾收集以及多线程等...
\n\nJava虚拟机的多线程特性使得程序能够同时处理多个任务,这对于模拟现实世界的并发行为和在多处理器系统上的高效执行至关重要。通过线程同步和通信机制,Java允许程序员处理并发活动之间的交互和数据共享,从而...
深入理解Java虚拟机(JVM)的工作原理,尤其是其在并发环境下的行为,对于优化代码性能、避免线程安全问题至关重要。 首先,我们要理解Java的线程模型。Java提供了两种创建线程的方式:通过实现Runnable接口或继承...
3.5 Java虚拟机中内置的安全特性 3.6 安全管理器和Java API 3.7 代码签名和认证 3.8 一个代码签名示例 3.9 策略 3.10 保护域 3.11 访问控制器 3.11.1 implies()方法 3.11.2 栈检查示例 3.11.3 一个回答...
Java虚拟机是Java语言的基础,它不仅提供了内存管理和垃圾回收等功能,还为Java程序的安全运行提供了保障。通过对JVM的深入理解,开发者可以更好地优化程序性能,提高应用程序的稳定性和响应速度。
综上所述,Java虚拟机是一个复杂且功能丰富的系统,它确保了Java程序的跨平台性、线程安全以及垃圾回收等核心特性。理解和掌握Java虚拟机的运行机制和内部构成,对于进行Java开发和性能调优至关重要。
Java虚拟机(JVM)是Java开发的核心组成部分,它是一个运行Java字节码的软件平台。这个压缩包“计算机软件-编程源码-Java 虚拟机规范.zip”很可能包含的是关于Java虚拟机的工作原理、设计规范以及可能的一些实现细节...
- **安全性**:Java提供了多种内置安全措施,如异常处理机制和沙箱模型。 - **平台独立性**:通过Java虚拟机(JVM),Java程序可以在不同的操作系统上运行,无需修改代码。 **1.2 JDK、JRE和JVM的区别** - **JDK ...
Java虚拟机(JVM)的类装载机制是Java运行时环境的核心组成部分,它负责将类文件中的字节码加载到JVM中,使类成为JVM的一部分。类装载过程不仅涉及基本的类查找和导入,还包含了链接、验证、准备、解析和初始化等多...