相关推荐
-
JVM类装载器详解
JVM类装载器详解
-
JVM类装载器机制
加载:查找并加载类全限定名的二进制字节流,转为方法区数据结构(特殊的堆),在Java堆中生成对应的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。 注意:对于数组类,情况就有所不同,数组类本身不...
-
java类验证和装载顺序_一张图看懂JVM之类装载系统
原标题:一张图看懂JVM之类装载系统 导读在之前的文章中,我们通过一张图的方式(图????)整体上了解了JVM的结构,并重点讲解了JVM的内存结构、内存回收算法及回收器方面的知识。收到了不少读者朋友们的反馈和指正,在...
-
JVM类加载器(类装载子系统)
加载:通过类的全限定名获取此类的字节流,将流代表的静态存储结构转化为方法区(作为一个内存区域,jdk1.7以前永久代,1.8之后元空间)的运行时数据结构,在内存中生成一个代表该类的java.lang.class对象,作为方法区这个类...
-
JVM之类装载子系统
如果一个类是用户类加载器加载的,JVM会将类加载器的引用作为类的一部分信息保存在方法区当中,当解析一个类型到另一个类型引用的时候,JVM则必须保证两个类加载器是相同的。(动态链接) JVM中对类的使用分为主动和...
-
JVM系列之三:类装载器子系统
虚拟机类装载器子系统:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。 类的加载指的是将类的.class文件中的二进制数据读入到...
-
JVM类加载器子系统
JVM Class Loader SubSystem概述类加载的过程加载阶段(Loading)链接阶段(Linking)初始化阶段(Initialization)3种类加载器& 自定义加载器获取 ClassLoader的4种方式自定义类加载器(User Defined ClassLoader)双亲...
-
JVM学习笔记02-类加载器子系统
1、类加载器子系统的作用 2、类加载器ClassLoader角色 3、类的加载过程 3.1、加载 3.2、链接 4、类加载器的分类 4.1、引导类加载器(Bootstrap ClassLoader) 4.2、扩展类加载器(Extension Class Loader) ...
-
JVM(二)类装载子系统
类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine(执行引擎)决定。 加载的类信息存放于...
-
JVM—类加载子系统
类加载器执行引擎在Java的日常应用程序开发中,类的加载几乎是由上述3种类加载器相互配合执行的,在必要时,我们还可以自定义类加载器,来定制类的加载方式。为什么要自定义类加载器?隔离加载类修改类加载的方式...
-
JVM类加载子系统
类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine(执行引擎)决定。 加载的类信息存放于...
-
[JVM]超详细JVM系列文(1):整体结构+类加载子系统+运行时数据区—程序计数器、栈(多图长文)
按照Java代码执行的流程,从类装载器子系统出发,剖析其各个子模块的结构与功能。结合Java语言中的相关设计思路(变量的初始化、存储;对象的生命周期、方法的调用)、OOP(继承、多态),在JVM进行追根溯源,解释其...
-
JVM一:类加载器子系统
类加载器子系统(ClassLoader):将class字节码文件加载到JVM内存中,是否会执行该字节码文件由 执行引擎决定。 类加载器子系统(Class loader subSystem)只负责将class文件加载进内存中,并且类在仅需要时加载,...
-
【JVM】VM是什么?JVM是什么?JVM作用是什么?JVM特点?JVM位置?JVM组成?
1、类加载子系统类加载的角色?类加载的过程?① 加载 Loading② 链接 Linking③ 初始化 Initialization类什么时候初始化?类的初始化顺序?类加载器分类?双亲委派机制是什么?双亲委派的优点?类的主动使用/被动...
-
JVM第二章-类加载子系统
类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。 加载
-
JVM-类加载子系统
System . out . println("你的大恩大德,我下辈子再报!");} }它的加载过程是怎么样的呢?...完成后调用 HelloLoader 类中的静态方法 main加载失败则抛出异常完整流程JVM严格来讲支持两种类型的类加载器。...
-
JVM总结之类加载子系统
一个类的完整生命周期如下 类加载过程 Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢? 系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又...
-
JVM系列之类加载子系统
1、类加载器与类的加载过程 1.1、类加载器 1.1.1、类加载器子系统的作用 负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识,魔术,CA FA BA BE Classloader只负责class文件的加载,...
-
4. JVM-类加载子系统
类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。 加载的类信息存放于一块称为...
-
【JVM】类加载子系统
一,内存结构 二,类加载器及类加载过程 三,类加载器的分类 四,ClassLoader的常用方法及获取方式 五,双亲委派机制 六,其他
15 楼 lipeixin 2012-11-20 10:57
不能出了什么问题都去怪程序员,程序员容易吗,有问题要修改,出问题要背黑锅,
给个功能限期几天内完成,那些老板只管数票子,这个比较缺乏对各种环境下的说明,把微软的程序员拉到中国的公司里,也只能是变成各种ctrl+c,ctrl+v的组合了.
14 楼 if(i!=我){} 2012-11-20 10:45
但是你仍然能看到刚开始时,这个项目是一个严谨的优秀的项目,但是09年走了一批优秀的人,然后来了新人直接就写代码,你就可以看到这个之后的代码有多么的糟烂。
现在项目组里也有这样的人,写的一个方法A,干的B的事,一个字符串C,其内容却是D。
这样的代码,就算加上注释也是难以理解的。至于其他的如设计,程序健壮性,异常处理等,你看了就只能深深的鄙视,有时间,结构便于修改的话,我还会改改。
不知道是否有人接触过遗留的烂项目,我接过一个,差点崩溃,名字都不对应,起名还有中英混合,简写不简写的。
至于几千行的超大类,超大方法,多层嵌套,对于后来人来说,噩梦啊。
我也遇见过这样的情况:代码中充斥着大量复制粘贴的东西,大量错误的注释,奇奇怪怪的逻辑——基本上是删之而后快!
13 楼 elektrobank 2012-11-20 10:40
恰恰相反
我非常认同“优秀的程序不需要加以说明;糟糕的程序需要大量注释。”
如果一段代码:
变量命名规范
方法名见名知意
方法粒度合适(功能专一、健壮)
格式化良好
我认为是不需要注释的,至少在方法内部是不需要注释的。除非读者的英语水平很差、或者没学过编程。
您说得内几点, 是个正常点的程序员都做得到. 注释的目的是让人家看懂整个过程中如何处理或实现复杂的业务逻辑.
12 楼 laogao3232 2012-11-20 09:57
但是你仍然能看到刚开始时,这个项目是一个严谨的优秀的项目,但是09年走了一批优秀的人,然后来了新人直接就写代码,你就可以看到这个之后的代码有多么的糟烂。
现在项目组里也有这样的人,写的一个方法A,干的B的事,一个字符串C,其内容却是D。
这样的代码,就算加上注释也是难以理解的。至于其他的如设计,程序健壮性,异常处理等,你看了就只能深深的鄙视,有时间,结构便于修改的话,我还会改改。
不知道是否有人接触过遗留的烂项目,我接过一个,差点崩溃,名字都不对应,起名还有中英混合,简写不简写的。
至于几千行的超大类,超大方法,多层嵌套,对于后来人来说,噩梦啊。
11 楼 H_eaven 2012-11-20 09:56
这个说的也没错,
而且如果是小众应用,或者是不经常改动的程序,其实可读性,清晰性没那么必要,可以追求些别的方面,但是像占程序开发中很大比重的业务系统的程序,需要多人协同开发,人员流动量也很大,改动也很频繁,如果不注重点可读性和清晰性,那么整天因为不是核心的问题,而是一些外围的问题就能把人给搞死了,
10 楼 zhbf5156 2012-11-20 09:51
优秀的程序并不一定赚钱,糟糕的程序也不一定不赚钱
如果所有的开发人员目的都是只为赚钱,中国it技术不如国外就说得通了。
9 楼 zhbf5156 2012-11-20 09:41
8 楼 tracyqucy 2012-11-20 09:09
恰恰相反
建议去看看Refactoring , 如果一段代码还要靠注释来解释这段代码的含义的话,那么这段代码就有bad smell, 需要进行重构.
就像四楼说的,好的方法名,清晰的变量名,每个函数只做一件事情并且尽量控制每个函数的代码在5-10行,并且遵守DRY原则.这才是好的代码. 这样的代码基本是不需要注释来说明的.
7 楼 skzr.org 2012-11-20 08:50
优秀的程序并不一定赚钱,糟糕的程序也不一定不赚钱
6 楼 pangbuddy 2012-11-19 20:40
恰恰相反
好的程序是可以“自说明”的, 自然流畅, 注释未免多余。
5 楼 if(i!=我){} 2012-11-19 19:06
代码设计是否糟糕,从某些地方就可以看出来。比如:
a. 超大类或超大函数
b. 大片被注释的代码
c. 逻辑重复
d. If/else嵌套过深
4 楼 if(i!=我){} 2012-11-19 18:58
恰恰相反
我非常认同“优秀的程序不需要加以说明;糟糕的程序需要大量注释。”
如果一段代码:
变量命名规范
方法名见名知意
方法粒度合适(功能专一、健壮)
格式化良好
我认为是不需要注释的,至少在方法内部是不需要注释的。除非读者的英语水平很差、或者没学过编程。
3 楼 yidao620c 2012-11-19 17:22
简单、可读性强、效率高
2 楼 Frankie199 2012-11-19 17:06
恰恰相反
1 楼 a414529949 2012-11-19 16:51