
java>java主体技术
文章平均质量分 87
java主体技术
和代码去流浪
这个作者很懒,什么都没留下…
展开
-
Mybatis拦截器
MyBatis介绍MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。它支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于...转载 2019-10-12 23:57:22 · 323 阅读 · 0 评论 -
深刻理解JNDI
初识JNDIJNDI是J2EE的核心技术之一,JNDI的功能简单说就是可以简单的方式去查找某种资源。比如在Tomcat中配置了一个JNDI数据源,那么在程序中之需要用Java标准的API就可以查找到这个数据源,以后数据源配置发生变化了,等等,程序都不需要改动,之需要改改JNDI的配置就行。增加了程序的灵活性,也给系统解耦了。JNDI的非常重要,我们时不时都在用它,可是很多程序员对它都很陌生,包括本人在内,下面从最根本的概念入手,认识下JNDI,也为以后深入研究JNDI做个铺垫。JNDI的概...转载 2021-10-23 22:29:45 · 559 阅读 · 0 评论 -
Java准确获取Word/Excel/PPT/PDF的页数(附Word页数读不准的处理办法)
Java准确获取Word/Excel/PPT/PDF的页数(附Word页数读不准的处理办法) 1.需求背景2.环境准备工作2.1 JACOB介绍及安装2.2 Microsoft Office Word的设置 3.代码3.1 代码示例3.1.1 pom.xml3.1.2 主要功能实现3.1.3 Main方法3.1.4 运行结果 3.2 注意事项3.2.1 获取Excel页数的注意事项3.2.2 获取Word页数的注意事项3.2.3 获取PPT页数的注意事项 ...转载 2021-05-02 18:11:33 · 4088 阅读 · 1 评论 -
阿里云服务器 通过JavaMail发送邮箱STMP问题( 25端口被禁用 使用SSL协议465端口
我们传统使用的比较简单的是STMP 25端口收发邮件今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件开始在网上有说发现是JDK1.8的原因,然后自己也把JDK1.8换到了JDK1.7 还是不行,所以这里排除了JDK的原因。那么问题来了,是否25端口不能连接适用喃?然后在终端输入命令行 ,可测试25端口是否可连接。telnet smtp.163.com 25 返回成功 说明你的服务器 是没有封掉25端口的。上面的图是我自己的电脑,当然能连通。..转载 2020-12-30 15:59:54 · 773 阅读 · 0 评论 -
ThreadLocal理解及应用
本次给大家介绍重要的工具ThreadLocal。讲解内容如下,同时介绍什么场景下发生内存泄漏,如何复现内存泄漏,如何正确使用它来避免内存泄漏。 ThreadLocal是什么?有哪些用途?ThreadLocal如何使用ThreadLocal原理ThreadLocal使用有哪些坑及注意事项 1. ThreadLocal是什么?有哪些用途? 首先介绍Thread类中属性threadLocals: /* ThreadLocal values pert...转载 2020-12-30 15:59:01 · 464 阅读 · 0 评论 -
使用ThreadLocal请务必remove
场景说明:压测的时候发现调用某个接口同一个入参,返回的商品数据不一致。 使用技术:threadLocal 问题原因:使用ThreadLocal没有remove。 导致问题:1内存溢出,ThreadLocal依赖没有释放,无法GC。 2线程池的某个线程会被反复使用,ThreadLocal的生命周期不等于一次Request的生命周期,造成获取threadLocal内数据异...转载 2020-12-30 15:55:15 · 790 阅读 · 0 评论 -
升级JDK8的坑--base64
概述Base64是一种字符串编码格式,采用了A-Z,a-z,0-9,“+”和“/”这64个字符来编码原始字符(还有垫字符“=”)。一个字符本身是一个字节,也就是8位,而base64编码后的一个字符只能表示6位的信息。也就是原始字符串中的3字节的信息编码会变成4字节的信息。Base64的主要作用是满足MIME的传输需求。 在Java8中Base64编码已经成为Java类库的标准,且内置了Base64编码的编码器和解码器。问题偶然发现使用jdk8内置的Base64解码器进行解析的时候,会抛出java.l转载 2020-12-30 15:52:08 · 1137 阅读 · 0 评论 -
Java8特性详解 lambda表达式 Stream
1.lambda表达式Java8最值得学习的特性就是Lambda表达式和Stream API,如果有python或者javascript的语言基础,对理解Lambda表达式有很大帮助,因为Java正在将自己变的更高(Sha)级(Gua),更人性化。--------可以这么说lambda表达式其实就是实现SAM接口的语法糖。lambda写的好可以极大的减少代码冗余,同时可读性也好过冗长的内部类,匿名类。先列举两个常见的简化(简单的代码同样好理解)创建线程排序lambda表达式配合J转载 2020-12-29 15:39:44 · 133 阅读 · 0 评论 -
简洁又快速地处理集合——Java8 Stream(下)
上一篇文章我讲解 Stream 流的基本原理,以及它与集合的区别关系,讲了那么多抽象的,本篇文章我们开始实战,讲解流的各个方法以及各种操作 没有看过上篇文章的可以先点击进去学习一下 简洁又快速地处理集合——Java8 Stream(上),当然你直接看这篇也可以,不过了解其本身才能更融会贯通哦。 值得注意的是:学习 Stream 之前必须先学习 lambda 的相关知识。本文也假设读者已经掌握 lambda 的相关知识。 本篇文章主要内容: 流基本的常用方法一种特化形式的流——数值流Op...转载 2020-12-29 15:37:31 · 144 阅读 · 0 评论 -
简洁又快速地处理集合——Java8 Stream(上)
Java 8 发布至今也已经好几年过去,如今 Java 也已经向 11 迈去,但是 Java 8 作出的改变可以说是革命性的,影响足够深远,学习 Java 8 应该是 Java 开发者的必修课。今天给大家带来 Java 8 Stream 讲解,为什么直接讲这个,是因为只要你学完,立刻就能上手,并能让它在你的代码中大展身手。值得注意的是:学习 Stream 之前必须先学习 lambda 的相关知识。本文也假设读者已经掌握 lambda 的相关知识。本篇文章主要内容:介绍 Stream 以及.转载 2020-12-29 15:37:45 · 142 阅读 · 0 评论 -
Java 异常之 RuntimeException和Exception的区别
在java的异常类体系中,Error和RuntimeException是非检查型异常,其他的都是检查型异常。 所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类 不可以在不声明的情况下抛出非RuntimeException简单的说 非RuntimeException必要自己写catch块处理掉。如果不处理,程序将出现编译错误。 RuntimeException不用try...转载 2020-12-28 17:10:58 · 1318 阅读 · 0 评论 -
RuntimeException和Exception区别
1.java将所有的错误封装为一个对象,其根本父类为Throwable, Throwable有两个子类:Error和Exception。2.Error是Throwable的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然ThreadDeath错误是一个“正规”的条件,但它也是Error的子类,因为大多数应用程序都不应该试图捕获它。在执行该方法期间,无需在其throws子句中声明可能抛出但是未能捕获的Error的任何子类,因为这些错误可能是再也...转载 2020-12-28 17:08:52 · 126 阅读 · 0 评论 -
Java各种系统架构图及其简介
1.spring架构图Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring框架的功能可以用在任何J2EE服务器中,大多数功能也适用于不受管理的环境。Spring的核心要点是:支持不绑定到特定J2EE服务的可重用业务和数据访问对象。这样的对象可以在不同J2EE环境 (Web或EJB)、独立应用程序、测试环境之间重用。组成Spring框架的每个模块(或组件)..转载 2020-12-28 17:08:08 · 1135 阅读 · 0 评论 -
Java内存回收机制--Java引用的种类(强引用、弱引用、软引用、虚引用)
写在前面:对Java有一定认识的人都知道,Java有垃圾回收机制,尽管如此,Java同样也会出现内存泄露,本篇系列主要介绍Java的内存回收机制,以及介绍开发过程中内存管理的小技巧。本文参考《疯狂Java-突破程序员基本功的16课》 Java内存管理包括内存分配(创建Java对象)和内存回收(回收Java对象)。这两者都是JVM(Java虚拟机)自动完成,正因如此,可能很多程序员不再关心程序的内存分配。...转载 2020-12-24 15:53:06 · 349 阅读 · 1 评论 -
你了解Java内存模型么(Java7、8、9内存模型的区别)
Java内存模型是每个java程序员必须掌握理解的,这是Java的核心基础,对我们编写代码特别是并发编程时有很大帮助。由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。 首先,我们回顾一下Java程序执行流程: 如上图所示,首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中,JVM会.转载 2020-12-24 15:50:39 · 573 阅读 · 2 评论 -
java并发之线程间通信协作
在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去。因此,一般情况下,当队列满时,会让生产者交出对临界资源的占用权,并进入挂起状态。然后等待消费者消费了商品,然后消费者通知生产者队列有空间了。同样地,当队列空时转载 2020-12-24 15:48:00 · 159 阅读 · 0 评论 -
Thread类中interrupt()、interrupted()和isInterrupted()方法详解
首先看看官方说明: interrupt()方法 其作用是中断此线程(此线程不一定是当前线程,而是指调用该方法的Thread实例所代表的线程),但实际上只是给线程设置一个中断标志,线程仍会继续运行。 interrupted()方法 作用是测试当前线程是否被中断(检查中断标志),返回一个boolean并清除中断状态,第二次再调用时中断状态已经被清除,将返回一个false。 isInter...转载 2020-12-23 15:14:48 · 196 阅读 · 0 评论 -
java IO、NIO、AIO详解
目录概述 一、IO流(同步、阻塞) 二、NIO(同步、非阻塞) 三、NIO2(异步、非阻塞)正文回到顶部概述在我们学习Java的IO流之前,我们都要了解几个关键词同步与异步(synchronous/asynchronous):同步是一种可靠的有序运行机制,当我们进行同步操作时,后续的任务是等待当前调用返回,才会进行下一步;而异步则相反,其他任务不需要等待当前调用返回,通常依靠事件、回调等机制来实现任务间次序关系 阻塞与非阻塞:在进行阻塞操作时,当前线程会处于阻塞状态,无法.转载 2020-12-23 15:13:17 · 130 阅读 · 0 评论 -
Java线程上下文切换
0 前言在过去单CPU时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是 多个任务或进程共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任务都有机会获得一定的时间片运行。再后来发展到多线程技术,使得在一个程序内部能拥有多个线程并行执行。一个线程的执行可以被认为是一个CPU在执行该程序。当一个程序运行在多线程下,就好像有多个CPU在同时执行该程序。多线程比多任务更加有挑战。转载 2020-12-23 15:10:37 · 788 阅读 · 0 评论 -
jdk8以上jvm常用参数
这几天一直在折腾jvm调优的事情。作为新手,把自己遇到的问题记录下来。调整jvm参数的方法有很多,网上也到处是,我也看了很多,选择用tomcat进行jvm参数设置。 linux服务器配置: linux系统下的tomcat通过startup.sh启动的 所以我们在catalina.sh正式代码开始之前加上 JAVA_OPTS="-Xms****m -Xmx****m -XX:MetaspaceSize=***...转载 2020-12-22 16:50:20 · 146 阅读 · 0 评论 -
Java一个汉字占几个字节(详解与原理)
目录 1、先说重点: 2、以下是源码: 3、运行结果 4、几种编码格式的简单介绍 5、字符编码的历史故事 6、一个字符为什么占两个字节 7、深入分析 Java 中的中文编码问题(转载) Java 中需要编码的场景 Java 中如何编解码 Java Web 涉及到的编码 常见问题分析 编码方案 1、先说重点: 不同的编码格式占字节数是不同的,UTF-8编码下一个中文所占字...转载 2020-12-22 16:56:14 · 785 阅读 · 0 评论 -
干货:Java正确获取客户端真实IP方法整理
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。 如果使用了反向代理软件,将http://192.168.1.110:2046/的URL反向代理为http://www.abc.com/的URL时,用request.getRemoteAddr()方法获...转载 2020-12-22 16:47:12 · 309 阅读 · 0 评论 -
JVM、GC和常用命令
这是11月份的一个分享,借着组内分享的机会,重新梳理了一遍JVM的一些基本概念和学习资料。在这个PPT中,关于G1的部分比较粗略,最近正在恶补G1的知识,后面可能会单独整理一篇分享出来。需要原件的,可以在我的公众号(duqi_Voice)后台回复JVM获取。JVM、GC和常用命令主要内容JVM架构概览JVM架构中影响应用性能的三个主要模块屏幕快照 2018-01-06 17.10.42.png屏幕快照 2018-01-06 17.10.50.png屏幕转载 2020-12-17 16:02:04 · 296 阅读 · 0 评论 -
使用 VisualVM 进行性能分析及调优
一、概述开发大型 Java 应用程序的过程中难免遇到内存泄露、性能瓶颈等问题,比如文件、网络、数据库的连接未释放,未优化的算法等。随着应用程序的持续运行,可能会造成整个系统运行效率下降,严重的则会造成系统崩溃。为了找出程序中隐藏的这些问题,在项目开发后期往往会使用性能分析工具来对应用程序的性能进行分析和优化。VisualVM 是一款免费的性能分析工具。它通过 jvmstat、JMX、SA(Serviceability Agent)以及 Attach API 等多种方式从程序运行时获得实时数据,从而进转载 2020-12-17 15:54:41 · 2140 阅读 · 0 评论 -
jvm优化(二)JVM 内存大小设置
Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识进行详细介绍。一、Java JVM内存介绍JVM管理两种类型的内存,堆和非堆。按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。简单来说堆转载 2020-12-17 15:52:19 · 547 阅读 · 0 评论 -
java GC jvm 内存分布 和新生代,老年代,永久代,(详细)
如果大家想深入的了解JVM,可以读读周志明《深入理解Java虚拟机:JVM高级特性与最佳实践》 需要掌握的东西,包括以下内容、判断对象存活还是死亡的算法(引用计数算法、可达性分析算法)、常见的垃圾收集算法(复制算法、分代收集算法等以及这些算法适用于什么代)以及常见的垃圾收集器的特点(这些收集器适用于什么年代的内存收集)。 JVM运行时数据区由程序计数器、堆、虚拟机栈、本地方法栈、方法区部分组成,结构图如下所示。 JVM内存结构由程序计数器、堆、栈、本地方法栈...转载 2020-12-16 14:23:15 · 1126 阅读 · 0 评论 -
jstat命令查看jvm的GC情况 (以Linux为例)
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]注意!!!:使用的jdk版本是jdk8. 类加载统计: Loaded:加载class的数量 Bytes:所占用空间大小 Unloaded:未加载数量 Bytes:未加载占用空间 Time:时间 编译统计 Compiled:编译数量。 Failed:失败数量 Invalid:不可用数量 Time...转载 2020-12-16 14:23:25 · 2142 阅读 · 0 评论 -
Java系列笔记(3) - Java 内存区域和GC机制
目录Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。概括地说,该机制对JVM(Java Virtual转载 2020-12-16 14:18:41 · 112 阅读 · 0 评论 -
同包同名的类的时候,使用哪个,哪个优先
最近项目中,遇到了一个问题,起因是这个样子的:项目A,它是一个web项目(使用spring开发,tomcat下部署,提供jsp页面,供用户使用),会引入产品包,暂且用product.jar来代替产口包吧吧。web项目最后会打成war包来部署。项目B,它呢,不需要页面,换言之,它也是web项目(使用spring开发,tomcat下部署),只是单纯的引入spring的定时任务来处理业务数据。说到底,它也是一个web项目,只不过不需要html,jsp这些东东,类似于windows里的服务吧,不需要有GUI转载 2020-12-15 18:15:59 · 2020 阅读 · 0 评论 -
java8 手把手教你学会写lambda表达式
项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 欢迎大家star,留言,一起学习进步 Java8发布已经有一段时间了,这次发布的改动比较大,很多人将这次改动与Java5的升级相提并论。Java8其中一个很重要的新特性就是lambda表达式,允许我们将行为传到函数中。想想看,在Java8 之前我们想要将行为传入函数,仅有的选择就是匿名内部类...转载 2020-12-15 18:15:00 · 251 阅读 · 0 评论 -
从零开始玩转JMX(一)——简介和Standard MBean
JMX的全称为Java Management Extensions. 顾名思义,是管理Java的一种扩展。这种机制可以方便的管理、监控正在运行中的Java程序。常用于管理线程,内存,日志Level,服务重启,系统环境等。 简介 基本术语 MBean:是Managed Bean的简称,可以翻译为“管理构件”。在JMX中MBean代表一个被管理的资源实例,通过MBean中暴露的方法和属性,外界可以获取被管理的...转载 2020-12-15 18:13:17 · 212 阅读 · 0 评论 -
JDBC之获取插入语句返回的主键
该获取主键并不是绝对的,也和具体的数据库实现的驱动有关。 package cn.itcast.jdbc;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import...转载 2020-12-15 18:03:00 · 399 阅读 · 0 评论 -
java-JDBC-ResultSet详解(java数据库操作)
这篇文章并没有给出如何使用ResultSet的具体例子,只是从ResultSet的功能性上进行了详细的讲述。希望这篇文章对大家理解ResultSet能够有所帮助。下面就是这篇文章的具体内容。结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等。结果集读取数据的方法主要是getXXX(),他的参数可以使整型表示第几列(是从1开始的),还可以是列名。返回的是对应的XXX类型的值。转载 2020-12-15 18:00:00 · 1041 阅读 · 0 评论 -
使用JDBC连接数据库(一)
JDBC是由java编程语言编写的类及接口组成,同时它为程序开发人员提供了一组用于实现对数据库访问的JDBC API,并支持SQL语言。利用JDBC可以将JAVA代码连接到oracle、DB2、SQLServer、MYSQL等数据库,从而实现对数据库中的数据操作的目的。一、JDBC简介JDBC全称为:Java Data Base Connectivity (java数据库连接),可以为多种数据库提供填统一的访问。JDBC是sun开发的一套数据库访问编程接口,是一种SQL级的API。它是由java语言转载 2020-12-15 17:58:13 · 262 阅读 · 0 评论 -
关于Thread对象的suspend,resume,stop方法(已过时)
一、作用 对于老式的磁带录音机,上面都会有暂停,继续,停止。Thread中suspend,resume,stop方法就类似。 suspend,使线程暂停,但是不会释放类似锁这样的资源。 resume,使线程恢复,如果之前没有使用suspend暂停线程,则不起作用。 stop,停止当前线程。不会保证释放当前线程占有的资源。 二、代码public static void main(String[] args) { Thread threa...转载 2020-11-23 17:35:39 · 826 阅读 · 0 评论 -
Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
Java线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列)。并且在某一时刻cpu只为ready queue中位于队列头部的线程服务。但是当前正在被服务的线程可能觉得cpu的服务质量不够好,于是提前退出,这就是yield。或者当前正在被服务的线程需要睡一会,醒来后继续被服务,这就是sleep。sl...转载 2020-11-23 17:33:43 · 205 阅读 · 0 评论 -
重写equal()时为什么也得重写hashCode()之深度解读equal方法与hashCode方法渊源
今天这篇文章我们打算来深度解读一下equal方法以及其关联方法hashCode(),我们准备从以下几点入手分析: 1.equals()的所属以及内部原理(即Object中equals方法的实现原理) 说起equals方法,我们都知道是超类Object中的一个基本方法,用于检测一个对象是否与另外一个对象相等。而在Object类中这个方法实际上是判断两个对象是否具有相同的引用,如果有,它们就一定相等。其源码如下: public boolean equals(Object obj) {..转载 2020-11-23 17:32:40 · 143 阅读 · 0 评论 -
Java中IO流,输入输出流概述与总结
总结的很粗糙,以后时间富裕了好好修改一下。1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中。其中,所有输入流类都是抽象类InputStream(字节输入流),或者抽象类Reader(字符输入流)的子类;而所有输出流都是抽象类OutputStream(字节输出流)或者Writer(字符输出流)的子类。【首先需要明白的是:流是干什么的???(为了永久性的保存数据) 根据数据流向的不同分为输入流和输出流; 根据处理数据类型的不同分为字符流和字..转载 2020-11-20 19:03:03 · 138 阅读 · 0 评论 -
java 垃圾回收机制和调优(转)Java Garbage Collection
一、JVM架构1、HotSpot 架构HotSpot JVM架构支持较强的基本特征和功能,此外还支持高性能和高吞吐率的特性。例如,JVM JIT编译器产生动态优化的代码,亦即,编译器是在Java运行的时候的时候进行优化,并为当然的系统架构生成高性能的目标机器指令。此外,经过对运行时环境和多线程垃圾回收器不断地设计和优化,现在的HotSpot JVM甚至在大型的系统上都具有较高的伸缩性。JVM 的主要组件包括:ClassLoader、运行时数据区和执行引擎。2、 HotSpot关键组件与性转载 2020-11-20 19:01:28 · 164 阅读 · 0 评论 -
Java垃圾回收机制、性能优化
前言 Android开发中经常会遇见应用内存不断增加,或者在处理不当的情况下,造成内存泄漏,严重会导致OOM;但是Java有自动垃圾回收机制,为什么还会造成这种情况呢,那我们通过new关键字创建出来的对象、开启的Activity在什么情况下会被回收呢?带着这个问题,我们来了解下Java内存区域和Java的垃圾回收机制。 Jav...转载 2020-11-20 18:59:50 · 250 阅读 · 1 评论