美文网首页
理解JVM对象内存分配相关知识

理解JVM对象内存分配相关知识

作者: 西元前__YP | 来源:发表于2018-04-17 15:15 被阅读0次

标题起的很大,但是我只想讲一个比较容易令我困惑的问题。

今天在刷一道简单的链表题目时,又产生了困惑,这次结合之前的JVM知识希望把这个问题彻底解决。

先上代码

    public static Node reverse(Node head){

        if(head == null || head.next == null){
            return head;
        }


        Node next = null;
        Node pre = null;

        while (head != null){

            next = head.next;
            head.next = pre;

            pre = head;
            head = next;

        }


        return pre;
    }

代码很简单,就是一个反转链表,Node是一个普通的类。

首先我们知道,JVM中,声明的对象引用存储在栈中,它所代表的实际对象存储在堆中。

Node a = new Node();

a这个对象引用存储在栈中,JVM同时也在堆中开辟了一块真实的内存存储这个Node对象,
栈中存储的实际上是地址,这个地址指向堆中的内存

那么我上面的代码中

        Node next = null;
        Node pre = null;

把它们声明为null, 这时其实在堆中并没有开辟内存,但是在栈中,占用了栈的空间,只不过里面存储的是null 值。

同时在java里对象传递的时候,传递的都是引用(也就是对象的地址),这比传递整个对象高效的多。而基础类型,int,double等传递的才是值。

       Node next = null;
        Node pre = null;

        while (head != null){

            next = head.next;
            head.next = pre;

            pre = head;
            head = next;

        }

所以在这个循环中,一开始head.next被赋值为pre (也就是null)

紧接着 pre=head , pre在栈中原本是null,现在变成了一个地址,这个地址指向了堆中的head实际对象。而head.next并没有改变,在栈中暂时还是null。

相关文章

  • 理解JVM对象内存分配相关知识

    标题起的很大,但是我只想讲一个比较容易令我困惑的问题。 今天在刷一道简单的链表题目时,又产生了困惑,这次结合之前的...

  • 深入JVM内核11 JVM内存分配

    理解JVM内存分配策略 JVM分配内存机制有三大原则和担保机制具体如下所示: 优先分配到eden区 大对象,直接进...

  • Java中四种引用

    Java内存管理包括内存分配和内存回收。 内存分配:程序员通过new对象,JVM会自动为该对象分配内存。 内存回收...

  • Java编程语言:java中四种引用!欢迎补充

    Java内存管理包括内存分配和内存回收。 内存分配:程序员通过new对象,JVM会自动为该对象分配内存。 内存回收...

  • JVM(七):JVM内存结构

    JVM(七):JVM内存结构 在前几节的文章我们多次讲到 Class 对象需要分配入 JVM 内存,并在 JVM ...

  • 内存分配策略

    详解JVM对象分配内存 对象的内存分分配主要是指对上分配(也可栈上分配),对象主要分配在新生代Eden区,如果启动...

  • 回顾JVM内存分配

    回顾JVM内存分配回顾JVM内存分配

  • JVM分代模型及堆内存介绍

    上一篇文章介绍了jvm的内存模型相关知识,本文就来介绍一下垃圾回收的相关内容。 垃圾回收器的作用 1、对象的分配与...

  • 【问答】补充

    Java JVM如何管理内存的? Java中内存管理是JVM自动进行的,创建对象或者变量时JVM会自动分配内存,当...

  • 对象内存图解

    创建一个对象 通过画图来看下对象在内存中是如何分配的,这样更有助于理解对象。学生类 学生测试类: 在JVM内存里面...

网友评论

      本文标题:理解JVM对象内存分配相关知识

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