JVM内存分配与回收策略

对象的内存分配,往大的方向上讲,就是在堆上分配,少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节决定于当前使用的是哪种垃圾收集器组合,当然还有虚拟机中与内存相关的参数。垃圾收集器组合一般就是Serial+Serial Old和Parallel+Serial Old,前者...

2019-07-19 10:57:47

阅读数 4

评论数 0

简易日志告警系统

1、需求分析 随着公司业务发展,支撑公司业务的各种系统越来越多,为了保证公司的业务正常发展,急需要对这些线上系统的运行进行监控,做到问题的及时发现和处理,最大程度减少对业务的影响。 目前系统分类有: 有基于Tomcat的web应用 有独立的Java Application应用 有运行在l...

2019-07-19 00:05:49

阅读数 5

评论数 0

HotSpot VM的收集器

如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。虚拟机具体如何进行内存回收动作,是由虚拟机所采用的GC收集器所决定的,而通常虚拟机中往往不止有一种GC收集器,像目前(JDK 7时代)的HotSpot里面就包含有Serial、Serial Old、ParNew、Paralle...

2019-07-18 17:34:38

阅读数 7

评论数 0

JVM垃圾回收(GC)

Java内存区域运行时,程序计数器、虚拟机栈、本地方法,栈随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而执行着出栈和入栈操作,每一个栈帧中分配多少内存在类结构确定下来时(编译期)大体上是已知的。方法结束或者线程结束时,内存自然就回收了,所以这几个区域就不需要过多考虑内存分配和回收的问题。...

2019-07-18 11:59:38

阅读数 8

评论数 0

Hotspot虚拟机在堆中对象的分配、布局和访问

1、对象的创建 Java是一门面向对象的编程语言,在Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢? 1...

2019-07-17 16:15:17

阅读数 10

评论数 0

模拟JVM各数据区内存溢出

在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生 OutOfMemoryError(下文称OOM)异常的可能,本文将通过若干实例来验证异常发生的场景,并且会初步介绍几个与内存相关的最基本的虚拟机参数。 1、Java堆溢出 Java堆用于存储对象实例,只要不...

2019-07-17 14:47:35

阅读数 10

评论数 0

JVM运行时数据区域

java1.8之前内存区域分为方法区、堆内存、虚拟机栈、本地方法栈、程序计数器。 下图所示: 在jdk1.8中,永久代已经不存在,存储的类信息、编译后的代码数据等已经移动到了元空间(MetaSpace)中,元空间并没有处于堆内存上,而是直接占用的本地内存(NativeMemory)。 1、...

2019-07-16 17:40:35

阅读数 11

评论数 0

深入理解Java线程池:ThreadPoolExecutor

线程池介绍 在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题: 如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。可能出现服务器在...

2019-07-12 18:41:18

阅读数 18

评论数 0

Java 8系列之重新认识HashMap

HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的...

2019-06-30 19:11:17

阅读数 34

评论数 0

红黑树实现之TreeSet源码分析

总体介绍 之所以把TreeSet和TreeMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说TreeSet里面有一个TreeMap(适配器模式)**。因此本文将重点分析TreeMap。 JavaTreeMap实现了SortedMap接口,也就是说会...

2019-06-30 17:54:52

阅读数 19

评论数 0

【Dubbo源码分析】服务导入

在 Dubbo 中,我们可以通过两种方式引用远程服务。第一种是使用服务直连的方式引用服务,第二种方式是基于注册中心进行引用。服务直连的方式仅适合在调试或测试服务的场景下使用,不适合在线上环境使用。因此,本文我将重点分析通过注册中心引用服务的过程。从注册中心中获取服务配置只是服务引用过程中的一环,除...

2019-06-25 15:42:41

阅读数 25

评论数 0

LinkedList源码分析

LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的。 1、继承结构 2、LinkedList数据结构 如上图所示,LinkedList底层使用的双向链表结构,有一个头结点和一个尾结点,双向链表意味着我们可以从头开始正向遍历,或者是从尾开...

2019-06-23 22:13:53

阅读数 16

评论数 0

ArrayList源码分析

ArrayList是可以动态增长和缩减的索引序列,它是基于数组实现的List类。该类封装了一个动态再分配的Object[]数组,当向ArrayList中添加元素时,该属性值会自动增加。如果想ArrayList中添加大量元素,可使用ensureCapacity方法一次性增加capacity,可以减少...

2019-06-23 15:29:36

阅读数 21

评论数 0

Java方法的参数是按值传递还是按引用传递?

当一个对象被当作参数传递到一个方法后,在此方法内可以改变这个对象的属性,那么这里到底是「按值传递」还是「按引用传递」?   答:是按值传递。Java 语言的参数传递只有「按值传递」。当一个实例对象作为参数被传递到方法中时,参数的值就是该对象的引用的一个副本。指向同一个对象,对象的内容可以在被调用的...

2019-06-22 23:25:59

阅读数 21

评论数 0

【Java基础】强引用,软引用,弱引用,虚引用

1、强引用 在程序代码中普遍存在,类似Object obj = new Object()这类的引用,只要强引用还存在,当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。垃圾收集器永远不会回收掉被引用...

2019-06-22 22:49:44

阅读数 22

评论数 0

软件架构设计的七大原则

1、开闭原则 开闭原则(Open-Closed Principle, OCP)是指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强调的是用抽象构建框架,用实现扩展细节。可以提高软件系统的可复用性及可维护性。开 闭原则,是面向对象设计中最...

2019-06-21 22:02:11

阅读数 33

评论数 0

谈谈你对Mysql的MVCC的理解?

MVCC(Mutil-Version Concurrency Control),就是多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。 在Mysql的InnoDB引擎中就是指在已提交读(READ COMMITTD)和可重复读(REPEATABLE R...

2019-06-19 00:09:16

阅读数 52

评论数 0

MySQL的MVCC

MVCC(Mutil-Version Concurrency Control),就是多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。 在Mysql的InnoDB引擎中就是指在已提交读(READ COMMITTD)和可重复读(REPEATABLE R...

2019-06-19 00:00:35

阅读数 23

评论数 0

【Elasticsearch入门】Elasticsearch集群管理

1、集群节点监控 在 Elasticsearch的运行期间,一个很重要的方面就是监控。这使得系统管理员能够检测并预防可能性的问题,或至少知道失败时会发生什么。 Elasticsearch提供了非常详细的信息,使你能够检査和监控单个节点或一个整体的集群。包括集群的健康值、有关服务器的信息、节点信息...

2019-06-11 21:03:20

阅读数 77

评论数 0

【Elasticsearch入门】Elasticsearch映射

映射是定义存储和索引的文档类型以及字段的过程。一个映射定义了文档结构内每个字段的数据类型。映射通过配置来定义字段类型与该类型相关联的元数据的关系。例如,可以通过映射来定义日期类型的格式、数字类型的格式或者文档中所有字段的值是否应该被a字段索引等。 1、概念 1.1、映射类型 每个索引拥有一个...

2019-06-09 23:32:27

阅读数 24

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭