
java学习
AbrahamCS
金融科技小白
展开
-
抽象类与接口的区别
一、二者定义抽象类(Abstract class):声明方法的存在而不去实现它。接口(Interface):抽象类的变体,所有的方法都是抽象。二、异同1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。2、抽象类要被子类继承,接口要被类实现。3、抽象类里可以没有抽象方法转载 2016-03-21 09:39:06 · 271 阅读 · 0 评论 -
内存分配与回收策略
Java自动内存管理的两个问题:给对象分配内存回收分配给对象的内存对象的内存分配,往大方向讲,就是在堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能直接分配在老年代中,分配的规则不是百分之百固定的,其细节在于使用哪种垃圾收集器组合,还有虚拟机中与内存相关的参数。对象优先在Eden分配绝大多数情况,对象都在...转载 2018-03-21 17:42:17 · 236 阅读 · 0 评论 -
理解GC日志
例如给出以下GC日志: 33.125:[GC[DefNew:3324K->152K(3712K),0.0025925secs]3324K->152K(11904K),0.0031680 secs]100.667:[FullGC[Tenured:0K->210K(10240K),0.0149142secs]4603K->210K(19456K),[Perm:2999K->2999K(21248...转载 2018-03-21 15:00:58 · 154 阅读 · 0 评论 -
JVM-垃圾收集器
Serial 收集器使用一个CPU或者一个收集线程区完成工作,工作期间,必须暂停其他所有线程。(Stop the world)新生代复制算法、老年代标记-压缩。 优势:简单而高效,对Client模式下的虚拟机来说很好。ParNew收集器Serial收集器多线程版本,除了用多条线程以外,其他行为包括Serial收集器可用参数、收集算法、Stop the world、对象分配规则、回收策...转载 2018-03-19 16:59:05 · 158 阅读 · 0 评论 -
JDK 的命令行工具
Sun JDK监控和故障处理工具 名称 主要作用 jps JVM Process status Tool,显示指定系统内所有的HotSpot虚拟机进程 jstat JVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面运行数据 jinfo Configuration Info For Java,显示虚拟...转载 2018-03-23 10:37:58 · 312 阅读 · 0 评论 -
垃圾收集算法
标记-清除算法(Mark-Sweep)算法分为两个阶段,标记和清除:标记出所有需要回收对象;统一回收所有标记对象。不足:效率太低(标记和清除都很慢)空间问题(出现不连续的内存碎片)复制算法(解决内存碎片问题)将内存分为两个相等块。当一个块的内存使用完了,将还存在的对象复制到另一块,然后再把已经使用过的内存空间一次清理掉。 目前商业虚拟机都采用这种方法来回...转载 2018-03-19 14:10:09 · 192 阅读 · 0 评论 -
Java内存管理方式
要真正宣告一个对象死亡,至少要经历两次标记过程:如果对象在进行可达性分析后发现没有与GC Roots相链接的引用链,那它将会被第一次标记并且进行一次筛选,筛选的条件是此对象是否有必要执行finalize()方法。当对象没有覆盖finalize()方法,或者finalize()方法已经被虚拟机调用过,虚拟机将这两种情况都视为“没必要执行”。如果对象被判定为有必要执行finalize()方法,...转载 2018-03-18 20:55:30 · 191 阅读 · 0 评论 -
可达性分析-内存管理
在主流的商用程序语言的主流视线中,都是称使用可达性分析来判定对象是否存在的。这个算法的基本思路就是通过一系列的成为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路劲成为引用链,当一个对象到GC Roots没有任何引用链相连时,则证明此对象时不可用的。 再Java语言中。可作为GC Roots的对象包括下面几种:虚拟机栈(栈帧中的本地变量表)中引用的对象方法区中...转载 2018-03-18 20:01:24 · 364 阅读 · 0 评论 -
引用计数算法-内存管理
算法:给对象中添加一个引用计数器,每当有一个地方引用它的时候,计数器就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象是不可能被使用的。 但是JVM并没有使用引用计数来管理内存,其中最重要的原因就是它很难解决对象之间的相互引用关系。 测试JVM不使用引用计数算法的代码如下(注意参数):/** * VM args : -XX:+PrintGCDetails * testG...转载 2018-03-18 19:40:43 · 809 阅读 · 0 评论 -
Leetcode 155. Min Stack
题目Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. push(x) – Push element x onto stack. pop() – Removes the element on top of the stack. top() – G...原创 2018-03-22 14:59:45 · 207 阅读 · 0 评论 -
Leetcode 128 Longest Consecutive Sequence
Longest Consecutive SequenceGiven an unsorted array of integers, find the length of the longest consecutive elements sequence.For example, Given [100, 4, 200, 1, 3, 2], The longest consecutive e...原创 2018-03-22 14:52:01 · 252 阅读 · 0 评论 -
本机直接内存溢出
DirectMemory容量可通过-XX:MaxDirectMemorySize指定,如果不指定,则默认和Java堆最大值(-Xmx)一样。代码如下:import java.lang.reflect.Field; import sun.misc.Unsafe; /** * VM args:-Xmx20M -XX:MaxDirectMemorySize=10M * test:使...转载 2018-03-16 21:22:03 · 334 阅读 · 0 评论 -
方法区和运行时常量池溢出
在JDK1.6以及之前的版本中,由于常量池被分配在永久代内,我们可以通过XX:PermSize和-XX:MaxPermSize限制方法大小,从而间接限制其中常量池的容量,代码如下:import java.util.*;/** * VM args : -XX:PermSize=10M -XX:MaxPermSize=10M * test:运行时常量池导致的内存溢出异常 */pu...转载 2018-03-16 21:06:42 · 246 阅读 · 0 评论 -
虚拟机栈和本地方法栈溢出
介绍关于虚拟机栈和本地方法栈,再Java虚拟机规范中描述了两种异常:如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常。如果虚拟机再扩展栈时无法申请到足够的内存空间,则抛出OutOfMemoryError异常。注意:在栈空间无法分配时,到底时内存太小,还是已经使用的栈空间太大,其本质是同一件事情实验1(StackOverflow...转载 2018-03-16 18:39:06 · 351 阅读 · 0 评论 -
Java堆溢出
编写Java堆溢出代码代码清单如下import java.util.*;/** * Java堆内存溢出异常测试 * VM args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError **/public class OOME { static class OOMObject{ } public stat...转载 2018-03-16 16:20:43 · 313 阅读 · 0 评论 -
singleton模式的java代码实现
Singleton模式主要作用是保证在java应用程序中,一个class只有一个实例存在。一般singleton模式通产有几种形式:第一种形式:定义一个类,它的构造函数是private的,它有一个static的private的该类变量,在类初始化时候实例化,通过一个public的getinstance方法获取对它的引用,继而调用其中的方法。public class Singleton1转载 2016-03-21 09:51:14 · 755 阅读 · 0 评论 -
SpringBoot注解整理
项目用到的注解作用:bean的分类标识 @Service: 注解在类上,表示这是一个业务层bean @Controller:注解在类上,表示这是一个控制层bean @Repository: 注解在类上,表示这是一个数据访问层bean @Component: 注解在类上,表示通用beanbean注入: @Autowired:按类型装配 @Resource: 按名称装配@Con...转载 2018-07-24 11:27:47 · 304 阅读 · 0 评论