美文网首页
java之循环引用

java之循环引用

作者: wangxiaowu241 | 来源:发表于2018-12-02 11:33 被阅读0次

在学习java内存模型及垃圾回收时提到了引用计数法无法解决循环引用的问题,心里一直在思考怎么才是循环引用。
netty中的循环引用的例子。

例如:NioServerSocketChannel类中有内部类NioServerSocketChannelConfig。每一个NioServerSocketChannel实例对象都有全局变量NioServerSocketChannelConfig的实例对象,而NioServerSocketChannelConfig实例对象在构造的时候也是需要将NioServerSocketChannel实例对象引用进去。也就是NioServerSocketChannel实例对象和NioServerSocketChannelConfig实例对象相互引用了。也就是循环引用。

public class NioServerSocketChannel extends AbstractNioMessageChannel
                             implements io.netty.channel.socket.ServerSocketChannel {

    private static final ChannelMetadata METADATA = new ChannelMetadata(false, 16);
    private static final SelectorProvider DEFAULT_SELECTOR_PROVIDER = SelectorProvider.provider();

    private static final InternalLogger logger = InternalLoggerFactory.getInstance(NioServerSocketChannel.class);

  
    //NioServerSocketChannel实例对象的全局变量ServerSocketChannelConfig的实例
    private final ServerSocketChannelConfig config;
public NioServerSocketChannel(ServerSocketChannel channel) {
    super(null, channel, SelectionKey.OP_ACCEPT);
    //在初始化config的时候将自己(NioServerSocketChannel的实例对象)也传入了
    config = new NioServerSocketChannelConfig(this, javaChannel().socket());
}
private NioServerSocketChannelConfig(NioServerSocketChannel channel, ServerSocket javaSocket) {
    super(channel, javaSocket);
}

相关文章

  • java之循环引用

    在学习java内存模型及垃圾回收时提到了引用计数法无法解决循环引用的问题,心里一直在思考怎么才是循环引用。nett...

  • Java的循环引用

    在使用spring的场景中,有时会碰到如下的一种情况,即bean之间的循环引用。并且,在一般情况下,这个配置在现有...

  • 4-8 循环引用

    3种循环引用 自循环引用 相互循环引用 多循环引用 Block的循环引用 NSTimer 的循环引用 破除循环引用...

  • 循环引用的相关问题

    1、循环引用的种类(1)自循环引用(2)相互循环引用(3)多循环引用 如何破除循环引用?(1)避免产生循环引用(2...

  • (转载)Java 7之基础 - 强引用、弱引用、软引用、虚引用

    (转载)Java 7之基础 - 强引用、弱引用、软引用、虚引用 1、强引用(StrongReference) 强引...

  • Swift之循环引用

    Swift中的循环引用是怎么样的呢?我们来看看: 调用: 这样是不会引起循环引用的,为什么呢? 要循环引用还要se...

  • Block 之 循环引用

    1、循环引用的现象 像上面例子中一样,当离开了MJPerson的作用域之后,MJPerson本该被释放却没有被释放...

  • JVM学习(一)判断对象是否可回收和回收算法

    一、对象已死吗? 引用计数算法不能解决循环引用问题,所以java虚拟机不用这种算法判断对象是否能回收。 java,...

  • java大厂面试题整理(七)强/弱/软/虚四大引用

    这篇文章主要介绍四大引用,java中引用分四种:强引用,弱引用,软引用,虚引用。而在Java项目中,百分之九十五都...

  • GC垃圾回收(1)- 回收算法与分代模型

    1. 什么是garbage垃圾? 没有任何引用指向的一个对象或者多个对象(循环引用),就是垃圾 1.1 Java与...

网友评论

      本文标题:java之循环引用

      本文链接:https://www.haomeiwen.com/subject/ilkjcqtx.html