填空题
- Java 提供两种不同的类型:引用类型和原始类型
- Error表示恢复不是不可能但是很困难的情况下的一种严重问题
- 静态内部类是被声明为静态的内部类,它可以不依赖与外部类实例被实例化
- Oracle不包含的后台进程有 SASS进程 包含 SMON、PMON、DBWR
实操题
Java的内存如何分类?分别起到的作用是什么?
运行时数据区即是java内存
java内存通常被划分为5个区域:程序计数器(Program Count Register)、本地方法栈(Native Stack)、方法区(Methon Area)、栈(Stack)、堆(Heap)
程序计数器(Program Count Register):又叫程序寄存器。JVM支持多个线程同时运行,当每一个新线程被创建时,它都将得到它自己的PC寄存器(程序计数器)。
栈(Stack):又叫堆栈。JVM为每个新创建的线程都分配一个栈。栈(Stack)是操作系统在建立某个进程时或者线程(在支持多线程的操作系统中是线程)为这个线程建立的存储区域,该区域具有先进后出的特性。
本地方法栈(Native Stack):存储本地方方法的调用状态。
方法区(Method Area):当虚拟机装载一个class文件时,它会从这个class文件包含的二进制数据中解析类型信息,然后把这些类型信息(包括类信息、常量、静态变量等)放到方法区中,该内存区域被所有线程共享。本地方法区存在一块特殊的内存区域,叫常量池(Constant Pool),这块内存将与String类型的分析密切相关。
堆(Heap):Java堆(Java Heap)是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域。在此区域的唯一目的就是存放对象实例,几乎所有的对象实例都是在这里分配内存,但是这个对象的引用却是在栈(Stack)中分配。
如果我们有一台8G内存的服务器,我们该如何分配TOMCAT使用内存?
tomcat内存参数
- -server:一定要作为第一个参数,在多个CPU时性能佳
- -Xms:java Heap初始大小。 默认是物理内存的1/64。
- -Xmx:java heap最大值。建议均设为物理内存的一半。不可超过物理内存。
- -XX:PermSize:设定内存的永久保存区初始大小。缺省值为64M。
- -XX:MaxPermSize:设定内存的永久保存区最大 大小。缺省值为64M。
- -Xmn:young generation(年轻代)的heap大小。一般设置为Xmx的3、4分之一
当碰到CPU超过100%,服务器无响应的时候,我们有什么办法可以检测到问题?
首先检查哪个进程占用资源过多,找到对应的进程,关注进程的日志输出,查看日志,分析问题。
数据库的读取慢的时候,我们该如何处理?
增加缓存机制,建立索引,把缓存,线程池都用上,优化数据库结构,优化索引
DB数据库和JAVA APP服务器一台在香港,一台在日本,查找4000条数据需要五分钟的时间,有什么办法缩短查找时间呢?
不知