jvm|Java新手的通病:不了解JVM,看看你中奖了没!


jvm|Java新手的通病:不了解JVM,看看你中奖了没!
文章图片
jvm|Java新手的通病:不了解JVM,看看你中奖了没!

为啥要聊JVM捏?因为有很多Java程序员 , 由于对 JVM缺乏了解 , 在碰到某些技术问题时无从下手;另外 , 由于缺乏对JVM的了解 , 可能导致写出来的代码性能巨差或者有严重的Bug 。 所以俺在之前的帖子“学习技术的三部曲:WHAT、HOW、WHY ”中 , 强调了掌握内部机制的重要性 。 对于一个Java程序员来说 , 你不一定要非常清楚JVM的细节 , 但是对于一些关键的运作机制 , 还是要掌握大致的概念 。
这几个和JVM相关的问题 , 你如果对这些问题不是很明白 , 那就得考虑花点时间去了解咯 , 不然又要被人说成新手了
★关于基本类型和引用类型
很多新手不理解Java的基本类型和引用类型在本质上有什么区别 。
【jvm|Java新手的通病:不了解JVM,看看你中奖了没!】◇这两种类型在内存存储上有什么区别?
◇这两种类型在性能上有什么区别?
◇这两种类型对于GC有什么区别?
★关于垃圾回收(Garbage Collection)
很多新手不理解GC的实现机制 。
◇GC是如何判断哪些对象已经失效?
◇GC对性能会有哪些影响?
◇如何通过JVM的参数调优GC的性能?
★关于字符串
对于Java提供的String和StringBuilder , 想必很多人都知道:String用于常量字符串 , StringBuilder用于可变字符串 。 那Java当初为什么要这样设计捏?为啥不用一个类来统一搞定捏?
★关于范型(Generic Programming)
从JDK 1.5开始 , Java引入了一个重量级的语法:范型 。
◇GP是在编译时实现的还是在运行时实现的?为什么要这么实现?
◇GP的类型擦除机制是咋回事?有啥优点/缺点?
◇使用范型容器(相对于传统容器)在性能上有啥影响?为什么?
★关于多线程
另外 , 多线程也是大部分Java新手的短板 。 所以俺最后再来提几个关于多线程的问题 。
◇synchronized关键字是怎么起作用滴?
◇synchronized的颗粒度(或者说作用域)如何?是针对某个类还是针对某个类对象实例?
◇synchronized对性能有没有影响?为什么?
◇volatile关键字又是派啥用滴?啥时候需要用这个关键字捏?
作为新手的你们要是能回答出这些问题 , 那么恭喜你们 , 我这可没有奖励


    推荐阅读