C++ 动态内存了解动态内存在 C++ 中是如何工作的是成为一名合格的 C++ 程序员必不可少的。C++ 程序中的内存分为两个部分: 栈:在函数内部声明的所有变量都将占用栈内存。堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。很多时候,您无法提前预知需要多少内存来存储某个定义变量中的特定 ...
分类:
编程语言 时间:
2018-08-01 15:21:14
阅读次数:
142
1. 对于基本数据类型 其值在内存中占据着固定大小的空间,并被保存在栈内存中。当一个变量向另一个变量复制基本类型的值,会创建这个值的副本,并且我们不能给基本数据类型的值添加属性。其为深拷贝。 2. 对于引用类型 浅拷贝:只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存; 改变一个对象 ...
分类:
Web程序 时间:
2018-07-29 14:23:21
阅读次数:
157
每个线程都有自己专属的栈,栈的最大尺寸是固定的,超出则引发栈溢出。 栈上的变量离开作用域,栈上的数据会自动释放。 选择用栈还是堆???? 明确知道数据占用内存,且数据量很小的情况下看,选择用栈。 在数据量很大,且不确定需要多少内存的情况下使用堆。 在栈上不能创建动态数组,在堆中能创建动态数组。 ...
分类:
其他好文 时间:
2018-07-29 00:48:00
阅读次数:
141
Java和C++之间有一堵由内存管理和垃圾收集技术所围成的“高墙”,墙外的人想进去,墙内的人却想出来。 摘自《深入理解Java虚拟机》 作为一个Java程序员,因为虚拟机的好处,在开发过程中一般不用关心内存分配和垃圾回收方面的内容,这就让我在跟C++的朋友聊天或沟通的时候,总觉得自己是个假的程序员, ...
分类:
编程语言 时间:
2018-07-15 00:49:37
阅读次数:
198
总结:1 栈:为编译器自动分配和释放,如函数参数、局部变量、临时变量等等2 堆:为成员分配和释放,由程序员自己申请、自己释放。否则发生内存泄露。典型为使用new申请的堆内容。除了这两部分,还有一部分是:3 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静 ...
分类:
其他好文 时间:
2018-07-14 16:26:15
阅读次数:
174
一、JVM配置参数分为三类参数: 1、跟踪参数 2、堆分配参数 3、栈分配参数 这三类参数分别用于跟踪监控JVM状态,分配堆内存以及分配栈内存。 二、跟踪参数 跟踪参数用于跟踪监控JVM,往往被开发人员用于JVM调优以及故障排查。 1、当发生GC时,打印GC简要信息 使用-XX:+PrintGC或- ...
分类:
其他好文 时间:
2018-07-05 19:55:10
阅读次数:
185
递归,指在当前方法内调用自己的这种现象 递归分为两种,直接递归和间接递归。 直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。 计算1-n之间的和 递归方法 注意:递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。 在递归中虽然有限定条件 ...
分类:
编程语言 时间:
2018-07-03 18:09:49
阅读次数:
148
02 JVM 系列(二)内存模型 一、JVM 内存组成 (1) PC 寄存器(线程私有) Java 虚拟机会为每个线程创建 PC 寄存器,在任意时刻,一个 java 线程总是在执行一个方法,这个方法被称为当前方法。 如果当前方法不是本地方法,PC 寄存器就会执行当前正在被执行的指令,如果是本地方法, ...
分类:
其他好文 时间:
2018-07-01 11:53:41
阅读次数:
211
equals()方法 Object类中的equals方法和“==”是一样的,没有区别,即俩个对象的比较是比较他们的栈内存中存储的内存地址。而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,他们比较的是值是不是相等。所以,当自己创建类时,自动继承 ...
分类:
其他好文 时间:
2018-06-26 18:38:09
阅读次数:
207
线程安全 众所周知,Java是多线程的。但是,Java对多线程的支持其实是一把双刃剑。一旦涉及到多个线程操作共享资源的情况时,处理不好就可能产生线程安全问题。线程安全性可能是非常复杂的,在没有充足的同步的情况下,多个线程中的操作执行顺序是不可预测的。 Java里面进行多线程通信的主要方式就是共享内存 ...
分类:
其他好文 时间:
2018-06-25 16:43:51
阅读次数:
1268