`
walklen
  • 浏览: 25435 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

说说jvm

 
阅读更多

1.一个jvm的天职就是运行一个java程序,当这个java程序关闭退出,这个jvm也随之消亡。一个jvm从一个java的main方法开始,其内部分两种线程,守护线程和非守护线程,守护线程一般来讲是jvm的后台线程,比如gc线程就是一个守护线程,程序的入口main方法就是java程序的第一个飞守护线程,当所有的非守护线程都结束,jvm的生命周期也就结束了。

2.每个对象都还有一个对象锁,用于协调多个线程访问同一对象(资源)的同步。

2.每个对象都有一个等待集合(wait set),等待集合是为多个线程完成某一目标而协调工作的,当一个线程调用了某个对象的wait方法,该线程就被阻塞,并把它放到该对象的等待集合中,知道另一线程在同一对象中调用notify或者notifuAll进行唤醒。

3:数组,在java中,数组是真正的对象,它的直径超类是Object,每一个具有相同维度和类型的数组都是同一个类的实例,数组类的组成有两部分,每一维用一个“[”表示,用字符或者字符串表示元素类型,如int类型一维数组的类名为:"[i";String的二维数组为“[[java/lang/String”.

4.栈帧,包括:

  (1)局部变量区,参数、局部变量的基本类型和引用

  (2)操作数栈,执行引擎操作过程的中间变量

  (3)帧数据区,存储常量池解析,正常返回或者异常派发等。

5.<clinit>方法是java编译器变量初时化语句静态初始话语句的代码都放到class的<clinit>方法中,jvm在加载初始化时调用该方法,如果有父类,就先调用父class的<clinit>,接口直径调用本身的<linit>.

6.实例化一个对象有四种方法1.new 2.Class或者Constructor的newInstance()反射实例化,3.clone  (),4.ObjectInputStream.getObject()反序列化。

分享到:
评论
3 楼 walklen 2012-07-13  
hougate 写道
在开发,应该这样用,如果一个线程的任务不太重要或线程的生命周期一定与主线程(main入口的线程)保持一致时,我们就可以把这个线程设置成守护线程,把它托管给虚拟机,这样在系统中就不需要管理这个线程的生命了;
不知道这样理解是否有误,请楼主详解!



线程的类别有继承的功能,非守护线程中建立的新线程会就是非守护线程,我们的线程一般都是直接或者间接在main线程建立的新线程,所以默认都是非守护线程。如果一个线程不太重要,而且生命周期很长,甚至有可能比任何其它的用户线程都长,这种情况下是可以用到守护线程的作用。
2 楼 hougate 2012-07-13  
在开发,应该这样用,如果一个线程的任务不太重要或线程的生命周期一定与主线程(main入口的线程)保持一致时,我们就可以把这个线程设置成守护线程,把它托管给虚拟机,这样在系统中就不需要管理这个线程的生命了;
不知道这样理解是否有误,请楼主详解!
1 楼 hougate 2012-07-13  


不错不错,
我对于守护线程和非守护线程,理解比较简单,其实我觉得应该叫守护线程和用户线程更加容易理解,而且守护线程的存在本质上就是为用户线程服务的(在虚拟机运行时应该有两个线程容器(ThreadList),一个是的虚拟机守护线程,一个是虚拟机运行的用户线程,所以在创建前必需先指定线程的类型,因为他会在创建时确定存放的容器),
在Main方法结束时,虚拟机会确定用户线程容器里是否存在用户线程,如果存在,就等待所有线程的结束,才结束虚拟机的生命周期;

说白了:守护线程是由虚拟机来决定是否销毁,用户线程,虚拟机没有权力销毁;

相关推荐

    jvm tools.rar

    再来说说JVM运行状态查看工具。这类工具可以帮助我们实时监控JVM的运行情况,例如内存使用、线程状态、CPU消耗等。常见的如VisualVM、JConsole、JProfiler等,它们能直观地展示JVM的各项指标,便于定位性能瓶颈,...

    java核心面试技术点

    1说说JVM原理?内存泄露与溢出区别,何时产生内存泄露? 编译源代码为本地机器码执行。 内存泄露是一部分内存无法回收。溢出是说内存不够用了。泄露可能在将来会导致溢出 当对象在程序中不会被使用,但却有其他...

    全套JVM面试题!面试必备!

    8. **说说类加载的双亲委派模型?** 类加载时,会先由父类加载器检查是否已加载,如果没有则向下传递。这样可以避免类的重复加载,并保证核心类库的安全。 9. **解释一下JNI(Java Native Interface)?** JNI是...

    JVM面试题分享给需要的同学.zip

    8.说说你知道的几种主要的JVM参数 9.怎么打出线程栈信息 10.强引用、软引用、弱引用、虚引用的区别? 1)强引用 软引用 弱引用 虚引用 11.堆栈的区别是什么? 12 对象的GC年龄最大多少?存储在哪 13 为什么GC分代年

    BAT大厂高频面试题:Redis+JVM+微服务+并发+Spring+MyBatis.docx

    说说 Redis 哈希槽的概念? Redis 集群通过哈希槽来分配数据,共有16384个槽位,每个键值对都会根据哈希值映射到某个槽位上,从而实现数据的分布存储。 ### JVM #### JVM 基础知识 - **JVM 的内存区域划分**:...

    JVM解毒——类加载子系统

    看你简历写得熟悉JVM,那你说说类的加载过程吧? 我们可以自定义一个String类来使用吗? 什么是类加载器,类加载器有哪些? 多线程的情况下,类的加载为什么不会出现重复加载的情况? 什么是双亲委派机制?它有啥...

    java offer收割指南

    13. JVM 中一次完整的 GC 流程是怎样的,对象如何晋升到老年代,说说你知道的几种主要的 JVM 参数。 JVM 中的一次完整的 GC 流程是 Mark-Sweep-Compaction。对象晋升到老年代的方式是通过 Serial GC、Parallel GC、...

    v3.0-JavaGuide面试突击版.pdf

    1. 说说 List、Set、Map 三者的区别? 2. Arraylist 与 LinkedList 区别? 3. RandomAccess接⼝ 4. 双向链表和双向循环链表 5. Collections ⼯具类和 Arrays ⼯具类常⻅⽅法总结 三、Java 多线程 1. 简述线程、...

    Java面试八股文十万字总结.docx

    - **平台无关性**:通过JVM实现了跨平台的能力,编写一次,到处运行(Write Once, Run Anywhere)。 - **健壮性**:异常处理机制和垃圾回收机制提高了程序的健壮性和可靠性。 - **安全性**:沙箱安全模型和内存管理...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【*JVM】查看jvm虚拟机里面堆、线程的信息,你用过什么命令? 59 【JVM】垃圾回收算法有哪些? 59 引用计数法(Reference Counting Collector) 59 tracing算法(Tracing Collector) 61 compacting算法(Compacting ...

    java面试笔试资料包括JAVA基础核心知识点深度学习Spring面试题等资料合集.zip

    Java面试高级篇—说说TCP,UDP和socket,Http之间联系和区别.doc MySQL千万级的大表要怎么优化(读写分离、水平拆分、垂直拆分).doc redis缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级.doc RPC (Remote ...

    JAVA教程 pdf

    标题《JAVA教程 pdf》和描述“觉得不错,我学习Java时候用的,不知道你们认为怎么样,说说你们看法,小弟刚来,多多指教”指向了一本关于Java编程语言的教程,该教程用于帮助学习者掌握Java编程的基础知识和高级应用...

    阿里巴巴面试总结DOC版

    本资源摘要信息主要总结了阿里巴巴面试中的问题和答案,涵盖了 Java 编程语言、设计模式、JVM 内存模型、ClassLoader 结构、UML 模型图、OSGi 框架、Spring 框架、iBatis 框架、Java 序列化、NIO 编程、HTTP 协议、...

    (精品推荐)面试干货IT人必须掌握的面试技巧-素材.docx

    5. 描述JVM堆、栈、方法区的用处及区别 6. 举例说明Java8与Java7的区别 7. 对您使用的GC进行原理性描述 8. 举例说明某个JDK函数或者类的源代码分析 9. 说说您过去的项目经历 10. 画出您最了解的项目的总体设计图 11....

    【后端】 java基础(5.8)java高级基础之线程——synchronized关键字

    我们的java是运行在jvm虚拟机下的程序,我们每多启动一个jvm就是多了启动了一个进程。至于线程,就是每个进程下多开一个和现有的的任务同时执行的任务。 我们一个程序至少包含一个进程,一个进程至少包含一个线程 ...

    Java架构师之路系列教程

    3.高级篇-单点登录,Groovy视频,性能优化,Maven,Mongodb,Redis,Spring Security,Spring 源码,JVM,微信,银行接口等 4.架构篇-Linux视频,Nginx视频,京东海量订单处理视频,大型电商分布式实践,架构实战等 ...

    JDKSourceCode1.8:Jdk1.8源码解析

    专注于共享技术干货,包括Java基础,Java并发,JVM,Nginx,Zookeeper,微服务,消息代码,源码解析,数据库,设计模式,面经等,助您编程之路少走弯路。 有人说说得很好,一个人学习可以走得很快,但一群人学习可以...

    Java面试宝典

    说说&和&&的区别。** - `&`:位运算符,也用于逻辑与操作,但不具有短路效果。 - `&&`:逻辑与操作符,具有短路效果,即左侧表达式为`false`时右侧表达式将不再计算。 **2. 用最有效率的方法算出2乘以8等于几?** ...

Global site tag (gtag.js) - Google Analytics