Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/ JVM Public

查看内存情况命令和对JVM的讨论(极客时间)

Notifications You must be signed in to change notification settings

malone91/JVM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

3 Commits

Repository files navigation

JVM 摘自极客时间评论

1、解释器是把代码一行一行解释为二进制指令,编译器是把代码一次性编译为二进制指令, 对JAVA语言来说,在执行阶段区分编译和解释,但对C语言来说,在执行阶段是直接执行二进制指令,不存在编译和解释,不知道理解对吗? 嗯,c语言直接编译为机器码,并不存在虚拟机,不存在Java的部分概念 2、java垃圾回收机制!是回收不再使用的堆内存嘛;那内存泄漏,gc不会主动回收这部分内存嘛。基本正确,但不只是堆。 3、aot是编译期发生的,属于静态编译,aot是直接将字节码转换成机器码;jit是运行时,不是一码事。 4、笔记:前端编译器有javac,作用:将.java源文件编译成.class文件;后端编译器有jit编译器, 可以将字节码生成本地机器码;热点代码是指频繁运行的某个方法或者是方法块,为了优化热点代码的执行效率,使用JIT编译器将这些代码编译成机器码。 5、JIT编译器就是把运行时JVM解释执行产生的codeCache对应的热点代码,动态编译成机器码去执行。 6、观点作为参考:JAVA的jit是运行前将源码编译为字节码文件。但是jit和aot都可以将字节码编译为机器码,只是jit将一些高频代码编译,aot将所有代码编译。 7、最近,每天都在纠结要不要离职,在这家公司一年了,感觉什么提升都没有,除了获得 报酬,别的好像并没有什么收获 :问下自己 跳槽为了什么,是不是跳槽就/才能解决,如果是也不用犹豫,否则也可以发现其他选择 8、a.开发 按照java平台的语法规范,结合平台提供的三方类库和框架开发程序, b.编译 开发完成后使用平台提供的javac工具将程序编译成.class文件, c.加载 平台通过classloder加载编译成功的.class文件到JVM中 d.运行 在运行时,JVM使用JIT将.class文件中的二进制字节码解释或编译(根据使用频率来判断使用解释还是编译)成计算机底层能够读懂的机器代码去执行 e.回收 运行期间,通过JVM的垃圾回收,根据参数使用不同的回收方法,将不再使用的内存地址中的数据清空 f、监控,调优 在JVM运行时我们还可以通过平台提供的如:jmap,jconsole等进行监控诊断工具,程序的性能进行监控诊断,进行程序的诊断和调优工作 9、动态编译会缓存起来,适合重复使用的场景。 10、国富论中讲到,社会的分工细化起到了提高生产力的关键作用。我觉得一次编写到处运行也是社会分工的一种模式, 他使大部分业务程序员注重领域模型的逻辑设计,不必关心底层的实现,使软件工程达到了专业的人做专业的事这一个高度。虽然现在掌握一门技术远远不够, 但是对于大部分业务程序员来说,只有把精力花在最重要的地方比如领域模型的设计,才会让业务更加流畅完善。所以我觉得JVM机制蕴含了一定的经济学原理。 11、jit会缓存编译过的在codecache里:JIT能在运行时刻将字节码编译成机器码, 这样热点代码就是编译运行了 12、所有的类运行时解析之后,再次运行时还会重复解析吗?:简单说,如果没有被jit编译,是的。 13、JIT编译的热点代码是指class文件还是class文件的部分内容?:不是以class为单位,是方法级。 14、写个程序直接执行字节码就是解释执行。写个程序运行时把字节码动态翻译成机器码就是jit。 写个程序把java源代码直接翻译为机器码就是aot。造个CPU直接执行字节码,字节码就是机器码。 15、解释执行和编译执行可以类比为 同声传译 和 放录音。 16、这种基于运行分析,进行热点代码编译的设计,是因为绝大多数的程序都表现为"小部分的热点耗费了大多数的资源"吧。 只有这样才能做到,在某些场景下,一个需要跑在运行时上的语言,可以比直接编译成机器码的语言更"快"

About

查看内存情况命令和对JVM的讨论(极客时间)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /