在学习spring aop时,实现的原理就是java动态代理,上一篇文章已经讲了静态代理,静态代理类是编译器确定的,而动态代理是运行时在JVM内存中生产的Class对象和对象实例,还是以一个例子说明,我们实际工程中有个需求:根据调用方请求的数据类型的不同,而使用不同的脚本抓取外部数据,比如外部数据有 ...
分类:
编程语言 时间:
2018-09-11 23:47:36
阅读次数:
241
直接缓冲区与非直接缓冲区的概念: 1)非直接缓冲区:通过 创建的缓冲区,在JVM中内存中创建,在每次调用基础操作系统的一个本机IO之前或者之后,虚拟机都会将缓冲区的内容复制到中间缓冲区(或者从中间缓冲区复制内容),缓冲区的内容驻留在JVM内,因此销毁容易,但是占用JVM内存开销,处理过程中有复制操作 ...
分类:
其他好文 时间:
2018-09-09 14:50:54
阅读次数:
201
1.内存分配与回收策略 2.对象优先在Eden 分配 Full GC 是整个堆的GC,会清理老年代和新生代。 3.大对象直接进入老年代 4.长期存活的对象进入老年代 5.动态年龄判断。 6.空间分配担保 ...
分类:
其他好文 时间:
2018-09-08 11:52:03
阅读次数:
193
1.Java技术体系结构 Java技术体系:广义上,Clojure、JRuby、Groovy等运行于java虚拟机上的语言以及相关的程序都属于java技术体系的一员。sun官方所定义的java技术体系包括以下几个组成部分: java程序设计语言、各种平台上的java虚拟机、class文件格式、jav ...
分类:
其他好文 时间:
2018-09-07 14:07:57
阅读次数:
136
Java堆是垃圾收集器管理的主要区域。因为基本采用分代收集算法,所以Java堆可以细分为新生代和老年代,更细致是Eden、From Survivor和To Survivor。划分的目的是更好地回收内存或更快地分配内存。根据JVM规范,Java堆可以处于物理上不连续的内存空间中,要求逻辑上连续。 1 ...
分类:
其他好文 时间:
2018-09-05 12:10:18
阅读次数:
126
JVM内存划分,人为的根据不同内存空间的存储特点以及存储的数据: 本地方法栈:为虚拟机使用的native方法服务。程序计数器:当前线程所执行的字节码的行号指示器。Java虚拟机栈:描述Java方法执行的内存模型,每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表、操作栈、动态链接、方法出口等 ...
分类:
其他好文 时间:
2018-09-04 23:29:05
阅读次数:
193
本文转自https://zhuanlan.zhihu.com/p/25713880。 JVM的基础概念 JVM的中文名称叫Java虚拟机,它是由软件技术模拟出计算机运行的一个虚拟的计算机。 JVM也充当着一个翻译官的角色,我们编写出的Java程序,是不能够被操作系统所直接识别的,这时候JVM的作用就 ...
分类:
编程语言 时间:
2018-09-03 02:21:07
阅读次数:
140
【原文地址】https://blog.csdn.net/sd4015700/article/details/50109939 Eden Space、Survivor Space、Tenured Gen,Perm Gen解释 JVM区域总体分两类,heap区和非heap区。heap区又分:Eden S ...
分类:
其他好文 时间:
2018-08-28 16:17:09
阅读次数:
173
1、FindBugs:检测代码,发现bug 2、alibaba-java-coding-guidelines:检测代码规范 3、visualvm-launcher:查看运行时jvm内存情况 4、generateallsetter:一键调用类的所有set方法 5、mybatiscodehelperpr ...
分类:
其他好文 时间:
2018-08-27 21:25:14
阅读次数:
144
volatile关键字修饰的共享变量主要有两个特点:1.保证了不同线程访问的内存可见性 2.禁止重排序 在说内存可见性和有序性之前,我们有必要看一下Java的内存模型(注意和JVM内存模型的区分) 为什么要有java内存模型? 首先我们知道内存访问和CPU指令在执行速度上相差非常大,完全不是一个数量 ...
分类:
其他好文 时间:
2018-08-27 18:10:40
阅读次数:
168