分析前基础了解:一)JVM把内存划分成两种:一种是栈内存,一种是堆内存。 ①在函数中定义的一些基本类型的变量和对象的引用变量(变量名)都在函数的栈内存中分配。 ②当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 ③堆内存用来存放由new创建的对象(包括由基本类型包装起来的类
分类:
编程语言 时间:
2018-09-01 15:58:53
阅读次数:
170
简述synchronized和java.util.concurrent.locks.Lock的异同? 解答: 主要相同点:Lock能完成synchronized所实现的所有功能 主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lo ...
分类:
编程语言 时间:
2018-08-29 14:19:04
阅读次数:
131
1.使用new创建对象,在堆内存分配对象空间、初始化; 2.在方法栈中定义局部变量,吃用对堆内存中对象的引用; 3.方法执行完返回,栈内存自动释放,局部变量销毁; 4.如果堆内存中对象没有变量引用它,成为垃圾,有垃圾回收器回收,释放所占堆内存 5.Java垃圾回收器 (1)Java运行时系统有一个垃 ...
分类:
编程语言 时间:
2018-08-24 02:09:41
阅读次数:
151
释放锁标记只有在Synchronized代码结束或者调用wait()。 注意锁标记是自己不会自动释放,必须有通知。 注意在程序中判定一个条件是否成立时要注意使用WHILE要比使用IF要严密。 WHILE会放置程序饶过判断条件而造成越界。 ...
分类:
其他好文 时间:
2018-08-05 14:25:39
阅读次数:
121
这里先说两个概念:1、堆(heap)2、栈(stack)堆 是堆内存的简称。栈 是栈内存的简称。说到堆栈,我们讲的就是内存的使用和分配了,没有寄存器的事,也没有硬盘的事。各种语言在处理堆栈的原理上都大同小异。堆是动态分配内存,内存大小不一,也不会自动释放。栈是自动分配相对固定大小的内存空间,并由系统 ...
分类:
编程语言 时间:
2018-08-02 13:52:02
阅读次数:
157
CTE 也叫公用表表达式和派生类非常类似 先定义一个USACusts的CTE with () 称为内部查询 与派生表相同,一旦外部查询完成后,CTE就自动释放了 CTE内部方式 就是上面代码所表示的方式 其实还有一种外部方式 定义多个CTE 多个CTE用 , 隔开 通过with 内存 可以在外查询中 ...
分类:
数据库 时间:
2018-08-01 23:50:32
阅读次数:
277
postgresql锁:postgresql中有3种锁模式,分别为:spinlock、lwlook和regularlock。1、spinlock自旋锁 spinlock使用互斥信息,与操作系统和硬件环境联系比较密切。spinlocky的主要特点是封锁的时间很短,没有等待队列和死锁检测机制。事务结束时,不能自动释放spinlock锁。2、LWLock轻量级锁 LWLock主要
分类:
数据库 时间:
2018-08-01 14:22:15
阅读次数:
229
每个线程都有自己专属的栈,栈的最大尺寸是固定的,超出则引发栈溢出。 栈上的变量离开作用域,栈上的数据会自动释放。 选择用栈还是堆???? 明确知道数据占用内存,且数据量很小的情况下看,选择用栈。 在数据量很大,且不确定需要多少内存的情况下使用堆。 在栈上不能创建动态数组,在堆中能创建动态数组。 ...
分类:
其他好文 时间:
2018-07-29 00:48:00
阅读次数:
141
-- 感谢CSDN用户:小小工匠 https://blog.csdn.net/yangshangwei/article/details/52449489 /*死锁后的解决办法 如果死锁不能自动释放,就需要我们手工的 kill session 生成Kill Session语句 查看有无死锁对象,如有 ... ...
分类:
数据库 时间:
2018-07-18 13:57:53
阅读次数:
230
常见的面试题:以下代码存在什么样的问题?应该如何改进? for (int i = 0; i < 100000; i++) { NSString *str = @"abc"; str = [str stringByAppendingString:@"xyz"]; } 利用leaks查看内存泄漏情况 可 ...
分类:
其他好文 时间:
2018-07-17 18:01:10
阅读次数:
208