普遍的一些小问题

Object大小

Object obj = new Object();
obj引用类型占用8 byte大小的栈空间
具体的对象占用的堆空间由对象决定

String拼接

StringBuffer append是线程安全的使用sychronized保证线程同步
StringBuilder 效率高,但是是非线程安全的
String 不可变的对象,每次对String进行操作的时候,都会生成一个新的对象,这会对系统的性能造成影响
StringBuilder和StringBuffer在处理拼接字符串的时候比+=效率高,因为一个是动态拼接,一个是静态拼接
每次+=""实际是重新开辟了内存空间来填充拼接后的字符串,会导致大量GC

JDK8针对+=""的拼接有做部分优化,在非fori的时候,会根据情况自动转义成StringBuilder/StringBuffer,但是在某些请款下还是不会变成有效的append方式,因此

因此在实际的使用中,当你无法区分字符串是静态拼接还是动态拼接的时候,还是使用StringBuilder/StringBuffer
如果能估算到字符串的长度, 尽可能去指定开辟的内存空间大小

String.intern()

s.intern()方法的时候,可能会导致永久代溢出, 因为会判断值是否存在永久代, 不存在则加入.

随机数Random

Random 虽然是线程安全的,是由于其对应的seed种子采用atomicLong保证了原子性,但是由于采用atomicLong在多线程竞争的时候会有性能损耗降低
SecureRandom 是继承Random的实现,本质上并发时也存在问题,但是随机性比Random好,除了使用系统时间外还使用了鼠标点击,键盘点击等等作为变量因子
ThreadLocalRandom 的SEED是无锁的,并发时不存在性能损耗

Java中的尾递归不支持优化

尾递归定义:

  1. 调用自身函数(Self-called)
  2. 计算仅占用常量栈空间(Stack Space)
  3. 调用在函数结束前最后一行, 只包含函数调用

Java到jdk8还是不支持尾递归(kotlin支持),不支持尾递归而使用了尾递归的写法,会导致深层次的线程棧帧嵌套最后导致stack overflow,以下代码是尾递归写法,在jdk编译的时候使用的是重复执行对应方法,在kotlin编译的时候会将递归改造成fori循环

public static int sum(int start, int end , int acc){
    if(start > end){
       return acc;
    }else{
       return sum(start + 1, end, start + acc);
    }
}

成员(实例)变量 + 类(静态)变量 + 局部变量

成员变量

  • 随着对象创建存在,回收释放
  • 只能被对象调用
  • 存储在堆内存 heap
  • 无初始化

类变量

  • 随着类加载存在,类消失消失
  • 能被对象/类名调用
  • 存储在方法区 method area(共享数据区)
  • 无需初始化

局部变量

  • 随着线程栈stack frame存在,释放
  • 只能在线程栈内部调用
  • 存储在栈 thread stack
  • 需要初始化
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容

  • 读了这么多书,却依然过不好这一生。 自我感觉还是一个喜欢读书的人,工作9年读了有四五百本书了吧,早期的武侠小说,玄...
    木鱼的城堡阅读 364评论 0 1
  • 1. 那天我回家时,已经十一点半了。在图书馆翻书一时兴起,把章昭给忘了。我本来与他有个约,他叫我今晚找他共度良宵来...
    倾言似阅读 515评论 0 0
  • Fisher123阅读 399评论 0 1
  • 如果说本周有什么新的进展,那就是早起。 早起对我来说并不是一件容易的事,多年来的习惯造就了我比较喜欢早睡晚起。但最...
    Cherry_娴小姐阅读 189评论 0 1