Java 对象的创建过程链滴 Java 对象的创建过程 作者:vcjmhg 原文链接:https://ld246.com/article/1619614850780 来源网站:链滴 许可协议:署名-相同方式共享 4.0 国际 (CC BY-SA 4.0) 概述 在之前的一篇文章《关于java继承的哪些事》简单讲了Java创建对象的过程,但具体细节当时并没有 细讲。因而本篇文章以HotSpot虚拟机为例, 来讲一下Java虚拟机是如何创建一个对象的? 简单来说Java对象的创建过程总共分为5步: Java创建对象的过程 类加载检查 首先当虚拟机遇到一个new指令时,首先会去检查这个参数能否在常量池中定位到这个类的符号引用 并且检查这个符号引用所代表的的类是否已经被加载、连接、解析和初始化过,如果没有需要先执行 的加载操作(详细过程可参考"类的加载流程" )。 分配内存 当类加载检查通过后 在Java堆规整的情况下,所有被使用过的内存放到一边,所有未被使用过的内存放置到另一边,中间 置一个指针作为分界点的指示器,当需要分配内存空间时,只需要将空闲指针向空闲内存方向移动对 内存大小的位置即可。 原文链接:Java 对象的创建过程 该算法能够使用的前提必须是空间是规整的,因为如果空间是碎片化的,很明显该算法就会失效。 另一种算法是空闲列表,其分配内存的过程如下: 虚拟机会维护一个列表,该列表中会记录那些内存块是可用的,在分配内存时,会在空闲列表中找到0 码力 | 4 页 | 389.87 KB | 1 年前3
在Eclipse中使用Maven创建Dynamic Web Project在Eclipse中使用Maven创建Dynamic Web Project 1 创建Maven Project 在Eclipse中选择File - new - Project… - Maven - Maven Project,创建Maven工程。按需填写相关信息,注意选择 org.apache.maven.archetypes maven-archetype-webapp 1.0,完成工程创建。 2 配置⼯工程JRE的版本为⾼高版本 配置⼯工程JRE的版本为⾼高版本 在所创建的项目上点击右键,选择Properties - Java Build Path - Libraries,选择JRE System Library[JavaSE-1.5], 将其修改为本机使用的高版本JRE,例如JavaSE-1.8(Java SE 8 [1.8.0_77])。设置完成后,右键点击工程中Java Resources - new - Source Folder,创建src/ Folder,创建src/test/resources目录。创建之后的Java Resources目录下包含4个子目录: src/main/java src/main/resources src/test/java src/test/resources 3 配置更更改class路路径 右键项目,选择Properties - Java Build Path -> Source,应该有4个源代码文件夹。 其中src/main/java、0 码力 | 2 页 | 345.86 KB | 1 年前3
Java 应用与开发 - 线程编程中国海洋大学 November 6, 2018 大纲 线程基础 线程控制 线程的同步 学习目标 1. 线程基础:理解任务调度、进程和线程,掌握其联系和区别; 掌握 Java 的线程模型,以及如何创建线程;理解后台线程。 2. 线程控制:理解线程的生命周期,明白各阶段的含义;掌握 线程控制方法,理解各线程控制方法对线程状态切换的作 用。 3. 线程的同步:理解临界资源问题,进一步明白线程安全的意 线程基础 线程控制 线程的同步 大纲 线程基础 相关知识回顾 线程的概念模型 创建线程 后台线程 线程控制 线程生命的周期 线程优先级 线程串行化 线程休眠 线程让步 线程挂起与恢复 线程等待与通知 线程的同步 大纲 线程基础 线程控制 线程的同步 ���� 线程基础 相关知识回顾 线程的概念模型 创建线程 后台线程 线程控制 线程生命的周期 线程优先级 线程串行化 线程休眠 线程让步 线程让步 线程挂起与恢复 线程等待与通知 线程的同步 大纲 线程基础 线程控制 线程的同步 相关知识回顾 ���� 线程基础 相关知识回顾 线程的概念模型 创建线程 后台线程 线程控制 线程生命的周期 线程优先级 线程串行化 线程休眠 线程让步 线程挂起与恢复 线程等待与通知 线程的同步 大纲 线程基础 线程控制 线程的同步 相关知识回顾 概念回顾 O 任务调度 ▶ 大0 码力 | 82 页 | 1010.73 KB | 1 年前3
《Java 应用与开发》课程讲义 - 王晓东. 22 3.2 一维数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.1 创建数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.2 一维数组的初始化 . . . . . . 3.5 字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.5.1 字符串变量的创建 . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.5.2 String 类的常用方法 . . . . . . . . . . . . . 32 4.1.1 JDK 常用包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.1.2 包的创建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 导入包中的类 . . . . . . . .0 码力 | 330 页 | 6.54 MB | 1 年前3
Apache Shiro 1.2.x Reference Manual 中文翻译Setup 设置 在这个简单的示例中,我们将创建一个非常简单的命令行应用程序,它将运行并迅速退出,这样你 可以领略到 Shiro 的API。 任何应用程序 Apache Shiro设计从一开始就支持任何应用程序——从最小的命令行应用程序最大的集群 web 应用程序。对于本教程,尽管我们创建一个简单的应用程序,你都知道运用相同的使用模 式来进行应用程序创建或部署。 本教程需要 Java 1.5 在你的文件系统中创建一个新目录,例如, shiro-tutorial 作为项目名并在目录下保存以下 Maven pom.xml 文件: 教程中的 class 我们将运行一个简单的命令行应用程序,因此我们将需要创建一个带 public static void main(String[] args) 方法 Java 类。 包含 pom.xml 文件的同一个目录下,创建一个*src/main/java 创建一个*src/main/java 子目录。 在 src/main/java 创建一 个 Tutorial.java 文件,包含以下内容: src/main/java/Tutorial.java import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.*; import org.apache.shiro.config.Ini0 码力 | 196 页 | 2.34 MB | 1 年前3
Apache Shiro参考手册中文版Setup 在这个简单的示例中,我们将创建一个非常简单的命令行应用程序,它将会运行并迅速退出,这样你能够获得对 Shiro 的 API 的感受。 Any Application Apache Shiro 从开始的那天起就被设计成能够支持任何应用程序——从最小的命令 行应用程序到最大的群集 Web 应用程序。即使我们为该教程创建的是一个简单的应 用,了解相同的使 用,了解相同的使用模式适用于无论你的应用程序是怎样创建的及它被部署到哪里。 该教程需要 Java 1.5 及更高本。我们也使用 Apache Maven 作为我们的构建工具,但当然这不是使用 Apache Shiro 所 必需的。你可以获取 Shiro 的 jar 包并按你喜欢的方式合并到你的应用程序,例如可能是一 Apache Ant 和 Ivy。 对于本教程,请确保你正在使用 Maven 2 2.2.1 或更高版本。你应该能够键入 mvn -version 命令行提示符,并看到与 下面类似的东西: 现在,在你的文件系统上创建一个新的目录,例如,shiro-tutorial 并在该目录下保存下面的 Maven pom.xml 文件: pom.xml0 码力 | 92 页 | 1.16 MB | 1 年前 3
Java 应用与开发 - 类加载和反射action 会被 StrutsPrepareAndExecuteFilter 拦截并解析 struts.xml 文件,检 索其中 name 为 login 的 Action,并根据 class 属性创建 LoginAction 的实例,并用 invoke 方法来调用 execute 方法。 这个过程是基于 Java 反射框架完成的。 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 我们需要获得 B 的实例的引用。如果 B 是接口�有多个实现该 怎么做? 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 反射的主要用途 3 O 依赖注入 接管对象的创建工作,并将该对象的引用注入需要该对象的组 件。例如,我们使用 Spring1框架将对象 B 注入到对象 A 中,A 需要进行如下修改,加入 setB() 方法: 1 public class A { 类的加载 类的加载是指将类的 class 文件读入内存,并为之创建一个 java.lang.Class 对象。 (类是某一类对象的抽象,都是 java.lang.Class 的实例) O 类加载的要点 ▶ JVM 提供类加载器(系统类加载器)来完成对类的加载。 ▶ 此外,开发者可以通过继承 ClassLoader 基类来创建自己的 类加载器。 ▶ 可以从本地文件系统、jar 包和网络方式加载类的0 码力 | 46 页 | 714.40 KB | 1 年前3
Java 应用与开发 - HTTP 会话跟踪技术服务器,访问 不同 Web 文档进行请求/响应,到结束访问的一系列过程称 为会话,即一次会话(Session)。 ▶ 当用户访问第一个 Java Web 组件时,Java EE Web 服务器 自动为用户创建一个会话对象。 例如,当当网进行图书浏览、购买、完成结算的全过程可能是一 次会话;登录 126 邮箱,完成浏览收件箱、编写邮件、发送邮件、 登出邮箱可以是一次会话。 大纲 会话基本概念 会话跟踪技术 户/服务器的信息交换模式。 ▶ Cookie 是 Web 服务器保存在客户端的小的文本文件,存储许多 name/value 对,可以保存如登录帐号、用户喜好等会话数据。 ▶ Cookie 由 Web 服务器创建,由 Web 服务器在进行 HTTP 响应 时,将 Cookie 保存在 HTTP 响应头中并发送给浏览器,浏览器 收到 HTTP 响应头,解析出 Cookie,将它保存在客户的本地隐 藏文件中。 户/服务器的信息交换模式。 ▶ Cookie 是 Web 服务器保存在客户端的小的文本文件,存储许多 name/value 对,可以保存如登录帐号、用户喜好等会话数据。 ▶ Cookie 由 Web 服务器创建,由 Web 服务器在进行 HTTP 响应 时,将 Cookie 保存在 HTTP 响应头中并发送给浏览器,浏览器 收到 HTTP 响应头,解析出 Cookie,将它保存在客户的本地隐 藏文件中。0 码力 | 54 页 | 824.47 KB | 1 年前3
跟我学Shiro - 张开涛2.1、首先通过 new IniSecurityManagerFactory 并指定一个 ini 配置文件来创建一个 SecurityManager 工厂; [users] zhang=123 wang=123 @Test public void testHelloworld() { //1、获取 factory.getInstance(); SecurityUtils.setSecurityManager(securityManager); //3、得到 Subject 及创建用户名/密码身份验证 Token(即用户身份/凭证) Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken sql;并添加一个用户记录,用 户名/密码为 zhang/123; 3、ini 配置(shiro-jdbc-realm.ini) 1、变量名=全限定类名 会自动创建一个类实例 2、变量名.属性=值 自动调用相应的 setter 方法进行赋值 3、$变量名 引用之前的一个对象实例 4、测试代码请参照 com.github.zhangkaitao.shiro0 码力 | 219 页 | 4.16 MB | 10 月前3
Java 应用与开发 - Java 内存模型与分配机制代码段 存放从硬盘上读取的源程序代码。(Perm) 数据段 存放 static 定义的静态成员。(Perm) 1注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因 为同一个类的对象拥有各自的成员变量,存储在各自的堆内存中,但是他们共 享该类的方法,并不是每创建一个对象就把成员方法复制一次。 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java 代码段 存放从硬盘上读取的源程序代码。(Perm) 数据段 存放 static 定义的静态成员。(Perm) 1注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因 为同一个类的对象拥有各自的成员变量,存储在各自的堆内存中,但是他们共 享该类的方法,并不是每创建一个对象就把成员方法复制一次。 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java 代码段 存放从硬盘上读取的源程序代码。(Perm) 数据段 存放 static 定义的静态成员。(Perm) 1注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因 为同一个类的对象拥有各自的成员变量,存储在各自的堆内存中,但是他们共 享该类的方法,并不是每创建一个对象就把成员方法复制一次。 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java0 码力 | 44 页 | 818.30 KB | 1 年前3
共 42 条
- 1
- 2
- 3
- 4
- 5













