随笔分类 - Java
摘要:为什么崩溃前fullgc的时间越来越长 根据内存模型和垃圾回收算法,垃圾回收分两部分:内存标记、清除(复制),标记部分只要内存大小固定时间是不变的,变的是复制部分,因为每次垃圾回收都有一些回收不掉的内存,所以增加了复制量,导致时间延长。所以,垃圾回收的时间也可以作为判断内存泄漏的依据。 为什么崩溃前
阅读全文
摘要:1.堆内存 堆内存用于存储new对象,垃圾回收器负责堆内存的管理。但Java程序实际占用的空间则由堆内存、栈内存(程序运行栈)、程序计数器、常量区、代码区、本地内存等。 堆内存分为Young和Old,Young分为2个Survivor (From Survivor和To Survivor),1个ed
阅读全文
摘要:服务端接收一个请求,常常需要同时进行几个计算或者向其他服务发送请求,最后拼装结果返回上游。本文就来看下JDK提供几个并行处理方案,牵涉到ExcecutorService/CompletionService。要实现的场景是请求有超时限制,如果所有操作都计算完成,则全部拼装返回;否则只拼装部分完成的结果...
阅读全文
摘要:程序产生过程下图展示了从源代码到可运行程序的过程,正常情况下先编译(明文源码到字节码),后执行(JVM加载字节码,获得类模板,实例化,方法使用)。本文来探索下当程序已经开始执行,但在.class甚至.java还未就绪的情况下,程序如何获得指定的实现。这就是我们下面的主题,动态编译。 相关类介绍Jav...
阅读全文
摘要:1.文件读取 项目外的绝对路径或相对路径文件读取 项目内(常常是resources目录下)或jar包内文件读取 2.List遍历删除 3.单例模式 //基于classloder避免多线程同步问题 public class Singleton { private static final Single
阅读全文
摘要:Java自动垃圾回收(Automatic Garbage Collection)是自动回收堆上不再使用的内存,new的对象在程序中没有引用指向它,就会被回收。回收的实现很多,有Reference Counting Collector/Tracing Collector/Compacting Coll
阅读全文
摘要:LDAP.search()当查询的数据较多时,数据条目大于LDAP服务器设置的最多数据时,就会出现SizeLimitExceededException。解决方法之一是分页查询,控制每次查询的数目。 public void getAllPerson() throws NamingException, ...
阅读全文
摘要:不知何时起NIO成了众考官青睐的问题!而本人之前都没碰到过。。。。。。NIO-new I/O,是在JDK 1.4开始引进的。主要包括java.nio,java.nio.channels,java.nio.channels.spi,java.nio.charset,java.nio.charset.s...
阅读全文
摘要:一直以来对于java.io包中的Stream、writer/reader、Buffered*等较为混沌,现在理一理它们之间的关系。主要依据字符、字节!字符:人可以看。字节:机器的编码,用于传输或读写硬盘上的数据。字节的读写(Stream)FileInputStream用于获得输入字节,可以读取诸如图...
阅读全文
摘要:基础永远且肯定是有用的!java.util.regex包里有接口MatchResult,两个类Matcher和Pattern,一个异常PatternSyntaxException。本文主要学习Matcher和Pattern。Pattern:模式,正则表达式的编译表示形式。创建Pattern实例:pu...
阅读全文
摘要:1.java.lang.Object是类层次结构的根类,每个类都使用Object作为超类。所有对象(包括数组)都实现这个类的方法。常用方法:protected Object clone():创建并返回此对象的一个副本。JDK中的解释让我不明所以,在此直接给出如何使用该方法:1.类实现Cloneabl...
阅读全文
摘要:JDK1.5以后提供了使用线程池的方法,相关类放在java.util.concurrent,java.util.concurrent.atomic,java.util.concurrent.locks包中。经常使用的是java.util.concurrent,存放着在并发编程中很常用的实用工具类。本...
阅读全文
摘要:java.util.concurrent.ThreadPoolExecutor 类提供了丰富的可扩展性。你可以通过创建它的子类来自定义它的行为。例如,我希望当每个任务结束之后打印一条消息,但我又无法修改任务对象,那么我可以这样写:ThreadPoolExecutor executor = new T...
阅读全文
摘要:从 Java 5 开始,Java 提供了自己的线程池。线程池就是一个线程的容器,每次只执行额定数量的线程。 java.util.concurrent.ThreadPoolExecutor 就是这样的线程池。它很灵活,但使用起来也比较复杂,本文就对其做一个介绍。首先是构造函数。以最简单的构造函数为例:...
阅读全文
摘要:Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。 volatile 变量 1. vo
阅读全文
浙公网安备 33010602011771号