Java
文章平均质量分 64
抱抱-
这个作者很懒,什么都没留下…
展开
-
Java7的try新功能
今天研究tomcat8的代码,发现try居然可以用括号,顿时觉得自己已经落后几万步了,百度了一下,发现这是Java7的新功能。 赶快来写个例子试试看: 以前写代码,总是要在finally里面把资源关闭,现在省事多了。try()里面的资源会自动关闭,只要该资源实现了AutoCloseable接口。调试了一下运行步骤:1、初始化资源,出现异常,执行步骤4、5,正常,执原创 2016-09-08 14:36:45 · 450 阅读 · 0 评论 -
JDK源码解析/深入理解Reference和ReferenceQueue
一、Reference简介1.reference状态Active:新创建的实例状态,当被垃圾收集器回收时,如果实例注册时候指定了队列,则变成Pending状态,否则变成Inactive状态。Pending:pending-Reference列表的一个元素,等待被Reference-handler线程入队。解注册的实例不会是这种状态。Enqueued:实例创建的时候指定的queue的一个元素,当实例...原创 2018-04-27 20:36:04 · 630 阅读 · 0 评论 -
TimeUnit使用和解析
https://blog.csdn.net/yuanyl/article/details/45098331http://www.bianceng.cn/Programming/Java/201312/38938.htm原创 2018-05-12 11:50:02 · 5393 阅读 · 0 评论 -
Java线程状态分析/线程状态转换图
注:以下代码讲解基于JDK1.8.0_144一、线程状态分类 线程一共有六种状态,分别为New、RUNNABLE、BLOCKED、WAITING、TIMED_WAITINGTERMINATED,同一时刻只有一种状态,通过线程的getState方法可以获取线程的状态。二、线程状态讲解2.1 NEW /** * Thread state for a thread which ...原创 2018-05-12 10:16:16 · 19450 阅读 · 4 评论 -
Java弱引用、软引用、强引用、虚引用
一、 概念。 强引用 -> Object strong = new Object(); ,类似这种代码,都是强引用,即使OutOfMemory,也不会被回收。通过设置strong = null,可以去除强引用。 软引用 -> SoftReference,在OutOfMemory时被回收。用来描述一些还有用但是并非必须的对象。可以和一个引用队列(Referen...原创 2018-04-27 20:17:11 · 785 阅读 · 0 评论 -
对象内存直接在老年代分配
对象优先在新生代分配,但是有的情况对象直接在老年代分配,如下:1、分配的对象大小大于eden space。适合所有收集器。2、eden space剩余空间不足分配,且需要分配对象内存大小不小于eden space总空间的一半,直接分配到老年代,不触发Minor GC。适合-XX:+UseParallelGC、-XX:+UseParallelOldGC,即适合Parallel Scavenge。3、...原创 2018-04-26 12:59:24 · 3037 阅读 · 0 评论 -
查看JVM使用的垃圾收集器/设置垃圾收集器JVM参数
一、设置垃圾收集器参数-XX:+UseSerialGC,虚拟机运行在Client模式下的默认值,Serial+Serial Old。-XX:+UseParNewGC,ParNew+Serial Old,在JDK1.8被废弃,在JDK1.7还可以使用。-XX:+UseConcMarkSweepGC,ParNew+CMS+Serial Old。-XX:+UseParallelGC,虚拟机运行在Serv...原创 2018-04-25 20:51:40 · 10915 阅读 · 0 评论 -
垃圾收集器类型简单介绍
一、新生代收集器1. Serial收集器 单线程收集、暂停所有用户线程,采用复制算法。单CPU环境效果最佳。建议Client模式下的虚拟机使用。2. ParNew收集器 多线程收集、暂停所有用户线程,采用复制算法。使用-XX:+UseParNewGC强制指定。3. Parallel Scavenge 多线程收集、暂停所有用户线程,采用复制算法。吞吐量优先收集器。目标达到一个可控制的吞吐量,即...原创 2018-04-25 19:53:14 · 174 阅读 · 0 评论 -
Minor GC和Full GC触发条件
一、Minor GC触发条件 1、eden区满时,触发MinorGC。即申请一个对象时,发现eden区不够用,则触发一次MinorGC。 注:新生代分为三个区域,eden space, from space, to space。默认比例是8:1:1。在MinorGC时,会把存活的对象复制到to space区域,如果to space区域不够,则利用担保机制进入老年代区域。 ...原创 2018-04-25 19:13:35 · 6981 阅读 · 3 评论 -
eclipse设置运行JVM参数
Eclipse设置JVM参数:->Run Configurations ->VM arguments,如下:原创 2018-04-25 15:28:32 · 4347 阅读 · 0 评论 -
如何逃脱垃圾回收
关于垃圾回收的触发机制,参考MinorGC和FullGC触发条件,本篇就是从其扩展而来。判断一个对象是否存活,除了GC Roots引用之外,还有一个条件就是对象是否重写了finalize方法,如果对象重写了该方法,则会交给FQueue队列去执行,如果执行该方法后被重新关联,则在下次回收时不会被回收,否则下次回收,该方法只执行一次。注:如果在finalize方法里面被重新引用,则下次GC不会被回收。...原创 2018-04-25 15:24:26 · 295 阅读 · 0 评论 -
Java获取文件path—getPath、getAbsolutePath、getCanonicalPath区别
一、三者相同点1、路径分隔符根据操作系统改变,Windows操作系统使用"\"分隔,Unix操作系统使用"/"分隔。2、路径最后一个字符不为分隔符。二、getAbsolutePath、getCanonicalPath相同点 相对路径都会以当前代码执行路径以父路径取绝对路径。如/home在Windows操作系统下属于相对路径,D:在Unix操作系统下属于相对路径。三、getCanonicalPat...原创 2018-04-24 14:21:52 · 1493 阅读 · 0 评论 -
JDK和JRE区别
简单解释:JDK 全称 Java Development Kit —— Java开发工具,主要是开发使用,常用工具的javac、javap、jstack都在内。JRE 全程 Java Runtime Environment —— Java运行环境,主要是用来运行java程序,所以java、javaws都在内。下面截图JDK1.8.0_144:ls -l jdk1.8.0_144ls -l j...原创 2018-04-17 20:31:34 · 273 阅读 · 0 评论 -
Java ServiceLoader使用和解析
一、使用场景一般使用接口的实现类都是静态new一个实现类赋值给接口引用,如下:HelloService service = new HelloImpl();如果需要动态的获取一个接口的实现类呢?全局扫描全部的Class,然后判断是否实现了某个接口?代价太大,一般不会这么做。一种合适的方式就是使用配置文件,把实现类名配置在某个地方,然后读取这个配置文件,获取实现类名。JDK给我们提供的TestSer...原创 2018-05-14 13:51:19 · 21325 阅读 · 1 评论