按照本系列的惯例,俺会问几个和 JVM 相关的问题,你如果对这些问题不是很明白,那得考虑花点时间去了解一下了。另外,鉴于有网友批评“本系列”帖子:光诊断毛病,不开出药方。(说得很形象,也很中肯)俺会针对下面提出的问题,写一些帖子来解答。
★关于基本类型和引用类型
很多新手不理解Java的基本类型和引用类型在本质上有什么区别。请看如下的问题:
◇这两种类型在内存存储上有什么区别?
◇这两种类型在性能上有什么区别?
◇这两种类型对于 GC 有什么区别?
关于前两个问题,请看之前的帖子“Java性能优化[1]:基本类型 vs 引用类型”。
★关于垃圾回收(Garbage Collection)
很多新手不理解 GC 的实现机制。请看如下的问题:
◇GC 是如何判断哪些对象已经失效?
◇GC 对性能会有哪些影响?
◇如何通过 JVM 的参数调优 GC 的性能?
关于 GC 的问题,可以参见之前的帖子“Java性能优化[3]:关于垃圾回收(GC)”。
★关于字符串
对于 Java 提供的 String 和 StringBuilder,想必很多人都知道:String 用于常量字符串,StringBuilder 用于可变字符串。那 Java 当初为什么要这样设计捏?为啥不用一个类来统一搞定捏?
★关于范型(Generic Programming)
从 JDK 1.5开始,Java 引入了一个重量级的语法:范型。不过捏,很多新手仅仅知道范型的皮毛,而对于很多本质的东东,不甚了解。
◇GP 是在编译时实现的还是在运行时实现的?为什么要这么实现?
◇GP 的类型擦除机制是咋回事?有啥优点/缺点?
◇使用范型容器(相对于传统容器)在性能上有啥影响?为什么?
★关于多线程
另外,多线程也是大部分 Java 新手的短板。所以俺最后再来提几个关于多线程的问题。
◇synchronized 关键字是怎么起作用滴?
◇synchronized 的颗粒度(或者说作用域)如何?是针对某个类还是针对某个类对象实例?
◇synchronized 对性能有没有影响?为什么?
◇volatile 关键字又是派啥用滴?啥时候需要用这个关键字捏?
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.com/2009/05/defect-of-java-beginner-5-jvm.html
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.com/2009/05/defect-of-java-beginner-5-jvm.html
6 条评论
请问这些问题在哪里可以找到答案,推荐基本说明清楚的书籍,好吗?
回复删除TO Zhu YH
删除可以看看《Core Java》《Thinking in Java》
如果俺没记错的话,本文列出的几个问题,可以在这两本书中找到答案。
我看core java 的时候,总是很奇怪作者为什么花那么多篇幅介绍API,而不是举出更加多的实例
回复删除JVM本身有Bug就很头疼了。
回复删除JVM使得不同硬件、不同操作系统可以99%兼容于Java这门语言,然而银弹是不存在的,Java它既做不到100%兼容,也不能保证众多不同jvm的质量问题,有的JVM的编译执行效率低下。
回复删除感谢博主的分享,软件工程路漫漫其修远,启发良多!
回复删除另外请教下,这个系列中的其他四篇提到的问题,也都能从Core Java、Thinking
In Java这两本书中找到答案吗?