一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调优 Java对象模型 oop-klass、对象头 ...
分类:
编程语言 时间:
2019-11-22 00:34:49
阅读次数:
72
类最基本的要素:字段+方法(变量+函数) 构造方法主要作用是完成对象的初始化。方法名与方法名类名相同 方法的重载:参数个数及类型不同 this:指这个对象本身 a.访问这个对象的字段及方法;b.区分字段与局部变量;c.用于构造方法调用另一个构造方法 因此写程序主要是定义类,将类中的字段和方法写好 1 ...
设计一个类,该类只能在堆上创建对象 将类的构造函数私有,拷贝构造声明成私有。防止别人调用拷贝在栈上生成对象。 提供一个静态的成员函数,在该静态成员函数中完成堆对象的创建 注意 在堆和栈上创建对象都会调用构造函数,为了防止在栈上创建对象我们将构造函数私有化。 拷贝构造函数是在栈上创建对象。 1 cla ...
分类:
编程语言 时间:
2019-11-13 01:06:10
阅读次数:
141
之前我写了几篇有关Java垃圾收集的文章之后,我收到了很多电子邮件,请求解释 Java堆空间 , Java栈内存 , Java中的内存分配 以及它们之间的区别。 您可能在Java,Java EE书籍和教程中看到很多有关堆和变量内存的参考,但是几乎没有就程序而言完全解释堆和栈的内存分配的。 Java堆 ...
分类:
编程语言 时间:
2019-11-04 11:56:23
阅读次数:
74
一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一
分类:
编程语言 时间:
2019-10-24 09:45:25
阅读次数:
80
浅拷贝和深拷贝都是对于JS中的引用类型而言的,浅拷贝就只是复制对象的引用(堆和栈的关系,原始(基本)类型Undefined,Null,Boolean,Number和String是存入堆,直接引用,object array 则是存入桟中,只用一个指针来引用值,如果拷贝后的对象发生变化,原对象也会发生变 ...
分类:
Web程序 时间:
2019-10-24 00:03:44
阅读次数:
118
一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆 ...
分类:
其他好文 时间:
2019-10-15 21:19:39
阅读次数:
87
0. 介绍 在C++中,程序的内存空间分成两部分,堆和栈。 栈:在函数中声明的所有变量都存在栈里。 堆:是程序中未使用的内存,用来在程序运行时动态分配内存空间。 在C++中可以通过new和delete操作符来控制内存空间的申请和释放。 new:申请一段内存空间,并创建对象,返回内存空间的起始地址。 ...
分类:
编程语言 时间:
2019-09-27 01:16:39
阅读次数:
108
在说堆和栈之前,我们先说一下JVM(虚拟机)内存的划分: Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的。JVM运行时在内存中开辟一片内存区域,启动时在自己的内存区域中进行更细致的划分,因为虚拟机中每一片内存处理的方式都不同,所以要单独进 ...
分类:
编程语言 时间:
2019-09-13 12:51:40
阅读次数:
65
JVM 堆和栈 简单意义上,Java把内存划分为两种:一种是栈内存,另一种是堆内存 栈式存储: 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。 优点:存取速度比堆要快,仅次于 ...
分类:
编程语言 时间:
2019-09-03 16:21:22
阅读次数:
103