![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
hongxingxiaonan
这个作者很懒,什么都没留下…
展开
-
CMS垃圾收集器运行原理
目录概述执行过程初始标记并发标记并发预清理可中断预清理重新标记并发清理并发重置数据结构card table异常情况概述CMS垃圾收集器是一款优秀的老年代并发垃圾收集器,通过与用户线程并发执行的方式减少GC停顿的时间。本文主要聊一下CMS设计到的相关的数据结构、具体的执行过程、运行中会出现的异常情况。在CMS之前并行垃圾收集器通过下图...原创 2020-03-24 23:18:41 · 1340 阅读 · 3 评论 -
commons-pool2对象池分配回收策略
commons-pool2对象池分配回收策略 前一段时间写了一个rpc的客户端,使用apache commons-pool2的对象池管理长连接。其中由于没有完全弄清楚各个参数的意义,即其中分配回收策略,所以出现了一些不太合理的现象。最近详细看了源码,这里整理一下。一、对象的创建1. 对象创建的时机 对象的创建有两个时机,一个是应用像对象池获取对象时;另一个是空原创 2017-06-02 16:57:08 · 2814 阅读 · 0 评论 -
VisualVM远程监控连接方法
1. 通过jstatd启动RMI服务 配置java安全访问,将如下的代码存为文件jstatd.all.policy,放到JAVA_HOME/bin中,其内容如下, grant codebase "file:${java.home}/../lib/tools.jar" { permission java.secu转载 2016-08-18 20:58:38 · 2309 阅读 · 0 评论 -
Java利用classloader从classpath加载资源
Java利用classloader从classpath加载资源 我们都知道classloader的getResource、getResources等方法可以加载classpath中的资源。classloader获取资源传入的参数是相对于classpath的相对路径,如果某个资源想要被classloader的加载到就要放到当前的classpath中,或者把资源所在的目录或原创 2016-01-09 14:09:00 · 10903 阅读 · 1 评论 -
关于Java中的异常
关于Java中的异常 异常的使用是Java程序离不开的一项技术,可以说没有异常处理的系统不是好系统。异常的发生说明程序遇到了错误,这个错误可以是可恢复的,也可能是不可恢复。有的异常是在编译期可以预见的,有的异常则是在运行期才抛出。常见的异常如文件找不到,找到了没有权限读,读到了但是没有权限写等。但是,并不是说所有的如文件找不到的情况都说明系统发生了错误,还是要根据自己系统的实际原创 2016-01-05 22:14:22 · 483 阅读 · 0 评论 -
理解JVM的class文件结构
理解JVM的class文件结构 开发者将Java代码写在.java文件中,经过编译器的编译生成了class文件,原来在Java文件中定义的信息将转存到class文件中。只有经过编译后的class文件才能被虚拟机理解,JVM才能将文件中的内容转换成其自己的内存结构。这个过程中,开发者和jvm好比不能沟通的两个人,但是开发者可以通过翻译(编译器)将他自己才懂得Java翻译成cla原创 2015-12-19 23:50:02 · 628 阅读 · 0 评论 -
Java中的类加载器
Java中的类加载器 类加载器是Java语言的创新,它负责通过类的全限定名找到其对应的字节码,并且从中定义出Java类对象即java.lang.Class的实例。虚拟机的设计者甚至运行开发者定义自己的类加载器,实现自己的类加载逻辑(但是要遵循一定得规则,后面会讲到)。 一,双亲委派 所有的知道类加载器classloader的Java开发者都应该知原创 2016-01-03 12:57:14 · 415 阅读 · 0 评论 -
Java中的方法分派
Java中的方法分派 程序设计中,许多时候把不同的函数命名成名字相同可以更清晰地表达出语义。相同的方法名字,需要根据方法的参数、调用者等信息来确定到底应该执行哪个方法。这个确定执行哪个方法的过程就是方法分派。 众所周知,Java是一门面向对象语言,为我们提供了重载和重写的机制。那么,在重载和重写的背后是一个怎样的原理或者原则呢?今天通过实验来揭示 一,静态原创 2016-01-02 14:32:39 · 1753 阅读 · 1 评论 -
JVM关闭及线程的退出
JVM关闭及线程的退出一,关闭方式 JVM的关闭意味着将停止系统中所有的任务,可以由其自动关闭也可以主动触发。下面的几个条件都可以使JVM关闭:1,所有的非守护都已经运行结束。2,调用了System.exit方法。3,杀死JVM进程4,通过系统平台发送关闭信号(比如按Ctrl+C)二,关闭钩子 如果我们想在JVM关闭时做原创 2016-01-16 16:46:43 · 9320 阅读 · 0 评论 -
Java中的自动拆装箱
Java中的自动拆装箱 Java语言中,基本类型和它对应的封装类型直接可以相互复制,共同参与运算。其实,经过编译后并不是直接使用不同的类型来进行赋值和运算,而是采用了自动拆装箱的方式把数据类型进行了变化。自动拆装箱只是JDK语法糖技术中的一个。如下的代码是可以通过编译并且成功运行的: public void assignment(){ int原创 2015-12-29 23:12:00 · 877 阅读 · 0 评论 -
JAVA服务端的解码
JAVA服务端的解码 引起乱码问题的缘由是编码与解码方法的不对称,为了能和客户端正确的交互,需要了解下服务端是何时,何处以及如何对内容进行编解码的。按照请求处理的过程,我们先来一一分析一下Java服务端对HTTP内容的解码过程。一,URI的解码 在tomcat中,负责对URI解码的是org.apache.catalina.connector.CoyoteAdapter的co原创 2015-11-23 23:18:18 · 5394 阅读 · 0 评论 -
字符编码研究
字符编码研究 应用开发中,经常会遇到乱码的问题,对于新手尤其如此。为了原理乱码问题带来的困扰,特整理一下字符编码的原理,从根本上杜绝乱码的出现。一,相关概念 在计算机的世界中,所有的信息都是由01组成的二进制信息,当然也包含字符。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。那么如何将这些字符转换成计算机理解的二进制信息就是编码过程,如何将二进原创 2015-11-20 23:07:48 · 3394 阅读 · 0 评论 -
Tomcat启动报java.lang.NoClassDefFoundError: org.springframework.beans.FatalBeanException
Tomcat启动报java.lang.NoClassDefFoundError: org.springframework.beans.FatalBeanException 前几天重新装了一下JDK,导致tomcat总是启动不了,经过多番周折终于发现问题并解决。在此记录一下,避免下次不要再花费这么多的时间了。 我的环境是64位WIN7系统,IDE用的idea,JDK1原创 2015-10-23 22:06:55 · 15559 阅读 · 1 评论 -
Java反射获取泛型类型
Java反射获取泛型类型 在Java反射技术的应用中,取得一个类的成员、方法和构造函数相对比较容易,但是要想取得其中包含的泛型类型则相对困难一些。先看一个简单的例子,然后详细说明每个步骤的作用。public class Demo { private List list1; private List> listSet; public Set f原创 2015-10-17 12:58:13 · 9211 阅读 · 0 评论 -
Java反射通过class获取父类泛型类型
Java反射通过class获取子类泛型类型在Java的反射技术中,通过Method和Field对象很容易就可以取出泛型类型的具体类型。但是普通类的泛型参数在编译期会被擦除,比如定义了一个List对象,在运行期我们可以拿到的信息就只剩下List,并不知道List中的元素类型是什么。这也说明了,为什么fun(List list)和 fun(List)会被编译器认为是相同的函数。但是,对于获原创 2015-09-26 12:52:09 · 12088 阅读 · 0 评论 -
jvm虚拟机特性之内存分配与回收
jvm虚拟机特性之内存分配与回收原创 2014-09-23 10:55:07 · 597 阅读 · 0 评论 -
jvm虚拟机特性之内存区域理解
jvm虚拟机特性之内存区域理解jvm把他管理的内存划分为多个区域,每个区域有自己的创建销毁时间,有自己的线程间共享和独占的属性。的内存区域划分如下图所示:原创 2014-09-18 18:37:43 · 698 阅读 · 0 评论