java及相关源码分析
天地不仁以万物为刍狗
天之道,损有余而补不足
人之道,损不足以奉有馀
展开
-
【Big Data 每日一题20181105】JVM GC参数设置、日志的格式分析
一、GC日志的格式分析 一、常用gc日志配置参数 -XX:+PrintGC #输出GC日志 -XX:+PrintGCDetails #输出GC的详细日志 -XX:+PrintGCTimeStamps #输出GC的时间戳(代表了GC发生的时间,这个数字的含义是从Java 虚拟机启动以来经过的秒数) -XX:+PrintGCDateStamps #输出GC的时间戳(以日期的形式,如 2013-0...转载 2018-11-04 22:40:42 · 174 阅读 · 0 评论 -
【Big Data 每日一题20181031】深入分析volatile的实现原理
转:http://cmsblogs.com/?p=2092 通过前面一章我们了解了synchronized是一个重量级的锁,虽然JVM对它做了很多优化,而下面介绍的volatile则是轻量级的synchronized。如果一个变量使用volatile,则它比使用synchronized的成本更加低,因为它不会引起线程上下文的切换和调度。Java语言规范对volatile的定义如下: Java...转载 2018-10-31 21:49:22 · 120 阅读 · 0 评论 -
【Big Data 每日一题20180822】Java动态编译优化——URLClassLoader 内存泄漏问题解决
转 https://blog.csdn.net/shijing266/article/details/81939477 一、动态编译案例 要说动态编译内存泄漏,首先我们先看一个案例(网上搜动态编译的资料是千篇一律,只管实现功能,不管内存泄漏,并且都恬不知耻的标识为原创!!) Java URLClassLoader 动态编译案例:https://blog.csdn.net/huangshan...转载 2018-08-22 23:11:22 · 2002 阅读 · 0 评论 -
Java NIO理解与使用
转:https://blog.csdn.net/qq_18860653/article/details/53406723Netty的使用或许我们看着官网user guide还是很容易入门的。因为java nio使用非常的繁琐,netty对java nio进行了大量的封装。对于Netty的理解,我们首先需要了解NIO的原理和使用。所以,我也特别渴望去了解NIO这种通信模式。官方的定义是:nio 是n...转载 2018-07-04 23:07:20 · 163 阅读 · 0 评论 -
NIO
NIO大纲: 1. Java NIO 简介 2. Java NIO 与 IO 的主要区别 3. 缓冲区(Buffer)和通道(Channel) 4. NIO 的非阻塞式网络通信 > 选择器(Selector) > SocketChannel、 ServerSocketChannel、 DatagramChannel 5. 管道(Pipe) 6. Java NIO2 (Path、 Pat...转载 2018-07-04 23:06:15 · 136 阅读 · 0 评论 -
Java动态代理的之JDK和CGLIB
代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为两种。 静态代理:由程序员创...转载 2018-06-26 20:29:45 · 110 阅读 · 0 评论 -
Java中>>和>>>的区别
>>:带符号右移。正数右移高位补0,负数右移高位补1。比如:4 >> 1,结果是2;-4 >> 1,结果是-2。-2 >> 1,结果是-1。>>>:无符号右移。无论是正数还是负数,高位通通补0。对于正数而言,>>和>>>没区别。对于负数而言,-2 >>&原创 2018-05-10 00:08:48 · 679 阅读 · 0 评论 -
Mark :BlockingQueue
https://blog.csdn.net/smuedward/article/details/54574938(一)BlockingQueue的原理1. 什么是BlockingQueue? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的...转载 2018-04-16 21:21:54 · 110 阅读 · 0 评论 -
Java动态代理的之JDK和CGLIB
https://blog.csdn.net/Evankaka/article/details/51932587代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对...转载 2018-03-27 00:21:55 · 122 阅读 · 0 评论 -
【Big Data 每日一题20181106】JVM 运行时开启GC日志
转 : https://www.cnblogs.com/xuezhiyizu1120/p/6237510.html 目录 一、GC日志的格式分析 二、运行时开启GC日志 一、GC日志的格式分析 在讲述GC日志之前,我们先来运行下面这段代码 1 package com.example; 2 3 public class TestMinorGC { 4 p...转载 2018-11-04 22:44:42 · 144 阅读 · 0 评论 -
【Big Data 每日一题20181107】详解JVM GC的工作原理
详解Java GC的工作原理 JVM内存管理和JVM垃圾回收 JVM内存组成结构 JVM内存结构由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示: 1)堆 所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由FromSpace和ToSp...转载 2018-11-04 22:48:07 · 184 阅读 · 0 评论 -
【Big Data 每日一题20181001】java 深拷贝 方案 (中英版)
转: 中英版 http://wudashan.com/2018/10/14/Java-Deep-Copy/ https://www.baeldung.com/java-deep-copy 介绍 在Java语言里,当我们需要拷贝一个对象时,有两种类型的拷贝:浅拷贝与深拷贝。浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化。而深拷贝则是拷贝了源对象的所有值,所...转载 2018-10-02 23:15:02 · 393 阅读 · 0 评论 -
【Big Data 每日一题20181111】为什么有栈内存和堆内存之分
为什么有栈内存和堆内存之分? 数组引用变量只是一个引用,这个引用变量可以指向任何有效的内存,只有当该引用指向有效内存,才可以通过该数组变量来访问数组。 实际的数组对象被储存在堆(heap)内存中;如果引用该数组对象引用变量是一个局部变量,那么它被储存在栈(stack)内存中。 当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量...转载 2018-11-11 23:42:13 · 127 阅读 · 0 评论 -
mark : JVM性能调优之生成堆的dump文件
一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。转载 2017-10-19 22:21:14 · 221 阅读 · 0 评论