首先了解一下JVM、栈和堆1栈:JVM中一个线程一个栈内存,栈内存是独立的,栈中储存局部变量,所以局部变量的内存不共享,不会存在线程问题。2堆:JVM中只有一个堆,堆内存是多线程共享的,堆内存中储存的是对象,java对象内部储存成员变量/实例变量,所以实例变量有可能存在线程问题。3 JVM中只有一个 ...
分类:
编程语言 时间:
2017-10-24 11:54:03
阅读次数:
228
JS的数值类型是分为两类:基本数据类型和引用数据类型。 基本类型占据的内存栈空间,引用类型被保存在堆空间。引用类型赋值的变量也是被保存在栈空间的,它的作用类似于电视遥控器,负责操作堆空间内指向的对象。 var num = 10; var change = function(obj){ obj = o ...
分类:
编程语言 时间:
2017-10-10 23:22:01
阅读次数:
176
js中对象分为基本类型和复合(引用)类型。基本类型存放在栈内存,复合(引用)类型存放在堆内存。 栈内存存放一些基本类型的变量和对象的引用变量,堆内存用于存放由new创建的对象。 浅拷贝仅仅是指向被拷贝的内存地址,如果原地址中对象被改变了,那么浅拷贝出来的对象也会相应改变。 深拷贝:我在想如何让obj ...
分类:
Web程序 时间:
2017-09-23 16:18:27
阅读次数:
294
当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,逐个方法的内存栈也将自然销毁。因此,所有的在方法中定义的局部变量都是放在栈内存中的。 在程序中创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(因为对象创建的成本通常比较 ...
分类:
其他好文 时间:
2017-09-06 00:31:03
阅读次数:
118
一:线程的基本概念 线程指进程中的一个执行场景,也就是执行流程,那么进程和线程有什么区别呢? 每个进程是一个应用程序,都有独立的内存空间 同一个进程中的线程共享其进程中的内存和资源(共享的内存是堆内存和方法区内存,栈内存不共享,每个线程有自己的栈。) 1.什么是进程? 一个进程对应一个应用程序。例如 ...
分类:
编程语言 时间:
2017-08-05 09:51:19
阅读次数:
139
js数据类型主要分为基本数据类型和引用数据类型 基本数据类型和引用数据类型的区别: 基本数据类型是对值得引用,引用数据类型是对地址的引用; 基本数据类型存放在栈内存,栈内存提供了供JS代码执行的环境,引用数据类型存放在对内存 基本数据类型包括: Array 数组 string 字符串 number ...
分类:
Web程序 时间:
2017-08-03 01:00:02
阅读次数:
159
静态修饰符 用static修饰的成员是静态成员 静态成员只能由类来调用 用static修饰的类是静态类 静态类不能实例化,只能包含静态成员和const常量 在内存中一共有五个区域 1. 堆区-需要程序员手动开辟,并管理内存 2. 栈区-由系统自动完成内存管理 3. 静态区(全局区)- 层序运行过程中 ...
对象 Java虚拟机采用自动的内存管理和自适应的优化策略。但了解java虚拟机的运行机制和优化策略,写出适合java虚拟机管理的程序对性能提升是有意义的。 逃逸分析:对象的作用范围只在本线程范围,如方法(包括静态方法)中new 对象,这个对象是不可能被其它线程共享。可以直接在栈上分配内存。栈上数据在... ...
分类:
其他好文 时间:
2017-07-08 21:06:24
阅读次数:
130
1.栈区(stack) --编译器自动分配释放,主要存放函数的参数值,局部变量值等; 2.堆区(heap) --由程序员分配释放; 3.全局区或静态区 --存放全局变量和静态变量;程序结束时由系统释放,分为全局初始化区和全局未初始化区; 4.字符常量区 --常量字符串放与此,程序结束时由系统释放; ...
分类:
编程语言 时间:
2017-07-05 22:54:19
阅读次数:
137
前几天偶然看到了一个这样的题: 这个题代码不多,不过考察的知识点却非常不错。我们知道内存空间分为栈内存和堆内存。栈内存用来存放供js代码来执行的环境,所以为了保证性能减少内存占用,我们一般把占用空间较小的类似于基本数据类型放在栈内存中,像引用数据类型这种占据空间比较大的东西,我们需要将它放在一个贮藏 ...
分类:
其他好文 时间:
2017-06-24 21:03:38
阅读次数:
166