上次的帖子
讨论了Java异常机制的几种误用,今天咱们来说说JVM(以及Java编译器)相关的话题。为啥要聊JVM捏?因为有很多Java程序员,由于对
JVM缺乏了解,在碰到某些技术问题时无从下手;另外,由于缺乏对JVM的了解,可能导致写出来的代码性能巨差或者有严重的Bug。所以俺在之前的帖子“学习技术的三部曲:WHAT、HOW、WHY
”中,强调了掌握内部机制的重要性。对于一个Java程序员来说,你不一定要非常清楚JVM的细节,但是对于一些关键的运作机制,还是要掌握大致的概念。<!-- program-think-->
按照本系列的惯例,俺会问几个和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关键字又是派啥用滴?啥时候需要用这个关键字捏?
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想
和本文原始地址:
http://program-think.blogspot.com/2009/05/defect-of-java-beginner-5-jvm.html
分享到:
相关推荐
Java基础知识学习:包括JVM虚拟机、对象模型等Java基础知识代码案例Java基础知识学习:包括JVM虚拟机、对象模型等Java基础知识代码案例Java基础知识学习:包括JVM虚拟机、对象模型等Java基础知识代码案例Java基础...
Java Image Processing Recipes: With OpenCV and JVM English | ISBN: 1484234642 | 2018 | 379 pages | PDF
【Java中的`java.net.BindException: Address already in use: JVM_Bind`异常】 在Java编程中,当你尝试启动一个服务器端应用,如Tomcat,或者任何需要监听特定端口的服务时,可能会遇到`java.net.BindException: ...
第4节: 揭秘JVM字符串常量池和Java堆-01第4节: 揭秘JVM字符串常量池和Java堆-01第4节: 揭秘JVM字符串常量池和Java堆-01第4节: 揭秘JVM字符串常量池和Java堆-01第4节: 揭秘JVM字符串常量池和Java堆-01第4节: ...
《揭秘Java虚拟机-JVM设计原理与实现》这本书深入探讨了Java虚拟机(JVM)的工作原理及其在Java编程中的核心地位。Java虚拟机是Java平台的核心组成部分,它负责执行字节码,为开发者提供了跨平台的运行环境。以下是...
在myeclipse中将html文件改成jsp文件时myeclipse卡住;将之前的任务关掉;再打开时多次部署项目的时候报错
20丨磨刀不误砍柴工:欲知JVM调优先了解JVM内存模型.html
* 高度可移植性:Java 程序可以在任何支持 Java 的操作系统上运行,而不需要再次编译。 * 高度安全性:Java 有一个安全沙箱,防止恶意代码的运行。 * 高度动态性:Java 具有高度的动态性,能够在运行时动态加载类库...
标签:jvm、metrics、dropwizard、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...
第3节: 揭秘JVM运行时数据区-02第3节: 揭秘JVM运行时数据区-02第3节: 揭秘JVM运行时数据区-02第3节: 揭秘JVM运行时数据区-02第3节: 揭秘JVM运行时数据区-02第3节: 揭秘JVM运行时数据区-02第3节: 揭秘JVM运行...
Dive into JVM garbage collection logging, monitoring, tuning, and tools Explore JIT compilation and Java language performance techniques Learn performance aspects of the Java Collections API and get ...
### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....
标签:jvm、metrics、dropwizard、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明...
1. 使用 Java 提供的垃圾回收机制:Java 提供了多种垃圾回收机制,例如 generational garbage collection、parallel garbage collection 等。 2. 使用外部工具:例如使用 Eclipse 的 Memory Analyzer Tool (MAT) ...
### Java虚拟机(JVM)内存设置与调优详解 #### 引言 在现代软件开发中,Java虚拟机(JVM)作为执行Java字节码的核心组件,其性能直接影响到Java应用的运行效率与稳定性。特别是在大数据处理场景下,合理设置JVM内存...
Java虚拟机(JVM)的性能调优是确保Java应用程序高效运行的关键。通过合理配置JVM参数和采用一些调优技巧,开发者可以显著提高应用程序的性能。本文将探讨一些常用的JVM性能调优技巧,并提供代码示例来展示这些技巧...
1. **JAVA文件的编译与执行**:JAVA程序首先通过编译器转换为中间代码(字节码),然后由JVM解释执行。 2. **JVM的角色与功能**:JVM作为JAVA程序运行时环境的核心组件,提供了平台无关性、安全性和动态链接等特性。...
在Java编程环境中,了解JVM(Java虚拟机)中所有线程的活动状态对于调试多线程程序至关重要。本文将详细讲解如何查看JVM中的线程活动情况,并提供相关示例代码。 首先,Java提供了`java.lang.management....
在IT行业中,JVM(Java Virtual Machine)是Java语言的核心组成部分,它负责执行Java程序。"006RJPOS:增加实现JVM的6条指令,修复若干BUG"这个标题表明这是一个关于JVM的更新或者优化项目,其中开发者新增了6条JVM...
3. JVM(Java Virtual Machine):Java虚拟机,是Java程序的执行引擎。它负责解析和执行.class字节码文件,实现了Java的跨平台特性。JVM是JRE的核心部分,负责加载类、执行字节码并管理内存。 二、JDK和JRE JDK是...