浅拷贝: 对象只会被克隆最外部的一层,更深层的对象还是通过引用指向同一块堆内存。 1. Object.assign() 2. 展开运算符 ... 3. 自己编写一个函数 深拷贝:不光解决了第一层的问题,还递归拷贝了目标对象的所有属性。 1. JSON.parse(JSON.strigify()) 缺 ...
分类:
其他好文 时间:
2019-02-13 13:09:14
阅读次数:
184
Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时,Java 自动内存管理最核心的功能是 堆 内存中对象的分配与回收。 JDK1.8之前的堆内存示意图: 从上图可以看出堆内存分为新生代、老年代和永久代。新生代又被进一步分为:Eden 区+Survivor1 区+Survivor2 ...
分类:
编程语言 时间:
2019-02-04 12:52:25
阅读次数:
261
A NoOp Garbage Collector JDK上对这个特性的描述是: 开发一个处理内存分配但不实现任何实际内存回收机制的GC, 一旦可用堆内存用完, JVM就会退出. 如果有System.gc()调用, 实际上什么也不会发生(这种场景下和 XX:+DisableExplicitGC效果一样 ...
分类:
编程语言 时间:
2019-02-04 10:29:05
阅读次数:
379
1.饿汉式 饿汉式的创建方法关键在于 instance作为类变量直接得到了初始化,这种方法的优点在于多线程环境下能够百分百地保证同步,在多线程环境下不可能被实例化两次,但是instance若是被加载后很长一段时间后才使用,就意味着instance实例开辟的堆内存会驻留更长的时间,所以更优的创建方式应 ...
分类:
其他好文 时间:
2019-02-02 10:36:38
阅读次数:
244
Java的线程对象是存储在堆上的,所以,能够创建多少个线程,受到堆空间的大小限制,同事也受到每个线程的大小的限制,假如线程对象内部有一个非常大的数组字段,那就非常影响能够创建的线程的大小 我们的例子: class Task implements Runnable { //5M堆内存 128k的情况下 ...
分类:
编程语言 时间:
2019-02-01 14:17:11
阅读次数:
214
堆内存溢出: 此种溢出,加内存只能缓解问题,不能根除问题,需优化代码堆内存中存在大量对象,这些对象都有被引用,当所有对象占用空间达到堆内存的最大值,就会出现内存溢出OutOfMemory:Java heap space 永久代溢出 如果发生,则是在初始化的时候,空间太小,解决办法,扩大空间类的一些信 ...
分类:
其他好文 时间:
2019-01-25 00:21:36
阅读次数:
217
java线程 概述 进程:运行时概念,运行的应用程序,进程间不能共享内存 线程:应用程序内并发执行的代码段,可以共享堆内存和方法区内存,而栈内存是独立的。 并发理解:在单核机器上,从微观角度来看,一段时间内cup只能执行一个任务,但是因为cup在只执行一段代码段的时候大部分的时间是处于等待程序的,所 ...
分类:
编程语言 时间:
2019-01-23 22:36:15
阅读次数:
200
== 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。 1、比较的是操作符两端的操作数是否是同一个对象。2、两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过。3、比较的是地址,如果是具体的阿拉伯数字 ...
分类:
其他好文 时间:
2019-01-21 22:52:10
阅读次数:
193
java内存区域 Java虚拟机执行java程序时会将管理的内存划分为若干个区域: 1. 程序计数器 程序计数器是一个”线程私有“的内存区域,用于获取下一条需要执行的字节码指令,如分支、循环、跳转等。 2. Java虚拟栈 在Java内存划分的时候,经常会听到将其分为”堆内存“和”栈内存“,这种分法 ...
分类:
编程语言 时间:
2019-01-21 22:50:30
阅读次数:
200
一智能指针的示例A.内存泄漏1.动态申请堆空间,用完后不归还2.C++语言中没有垃圾回收的机制3.指针无法控制所指堆空间的生命周期B.当代C++软件平台中的智能指针1.指针生命周期结束时主动释放堆空间2.一片堆空间最多只能由一个指针标识3.杜绝指针运算和指针比较智能指针的设计方案a.通过类模板描述指针的行为能够定义不同类型的指针对象b.重载指针特征操作符(->和*)利用对象模拟原生指针的行为
分类:
其他好文 时间:
2019-01-21 12:08:52
阅读次数:
171