Java方法区和运行时常量池溢出问题分析
由于运行时常量池是方法区的一部分,所以这两个区域的溢出测试可以放到一起进行。前面曾经提到HotSpot从JDK 7开始逐步“去永久代”的计划,并在JDK 8中完全使用元空间来代替永久代的背景故事,在此我们就以测试代码来观察一下,使用“永久代...
由于运行时常量池是方法区的一部分,所以这两个区域的溢出测试可以放到一起进行。前面曾经提到HotSpot从JDK 7开始逐步“去永久代”的计划,并在JDK 8中完全使用元空间来代替永久代的背景故事,在此我们就以测试代码来观察一下,使用“永久代...
在《Java虚拟机规范》的规定里,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(下文称OOM)异常的可能,本节将通过若干实例来验证异常实际发生的代码场景,并且将初步介绍若干最基本的与自动内存管理子...
介绍完Java虚拟机的运行时数据区域之后,我们大致明白了Java虚拟机内存模型的概况,相信读者了解过内存中放了什么,也许就会更进一步想了解这些虚拟机内存中数据的其他细节,譬如它们是如何创建、如何布局以及如何访问的。对于这样涉及细节的问题,必...
Dubbo服务发布与消费的概要流程 1. Dubbo服务提供者暴露服务的概要过程 首先ServiceConfig类引用对外提供服务的实现类,ref (如UserServiceImpl),然后通过ProxyFactory接口的扩展实现类的ge...
1. Service和Config层 为API接口层,是为了让Dubbo使用方方便地发布服务和引用服务;对于服务提供方来说需要实现服务接口,然后使用ServiceConfig API来发布该服务,对于服务消费者来说,使用ReferenceC...
1. 本地服务Mock 服务消费者本地服务mock主要用来做本地测试用,当服务提供端服务不可用时,使用本地mock服务可以模拟远端提供者让消费者测试自己的功能,而不需要发起远程调用。 要实现mock功能,首先需要消费者先实现服务接口的moc...
在前面的文章中,我们说到消费者要消费服务提供者的服务时,需要引用提供者的rpc包,其中存放着提供者的一些接口或者POJO类。 泛化接口调用方式主要在服务消费者没有API接口类型单元的情况下使用,其参数及返回值没有对应的POJO类,所以所有P...
1. 基于定义CompletableFuture签名的接口实现异步执行 在provider模块中,基于CompletableFuture签名接口实现异步执行的接口实现类为UserServiceImpl,代码如下: public class ...
什么是同步调用,也就是说调用线程在服务提供方结果返回前需要被阻塞,异步调用则是说消费者发起调用后会马上返回。本篇我们将介绍两种异步调用方式。 1. Dubbo 2.6.*版本提供的异步调用 首先我们看看第一种异步调用方式:首先写一个消费者基...
今天我们模拟写一个简单的聊天应用程序,首先我们需要定义聊天程序的几个Event User Online Event:当用户:上线时来到聊天室的Event。 User Offline Event:当用户下线时退出聊天室的Event。 User...