JVM-----常见问题

1)你能保证 GC 执行吗?(答案)

不能,虽然你可以调用 System.gc() 或者 Runtime.gc(),但是没有办法保证 GC 的执行。

2)怎么获取 Java 程序使用的内存?堆使用的百分比?

可以通过 java.lang.Runtime 类中与内存相关方法来获取剩余的内存,总内存及最大堆内存。通过这些方法你也可以获取到堆使用的百分比及堆内存的剩余空间。 Runtime.freeMemory() 方法返回剩余空间的字节数,Runtime.totalMemory() 方法总内存的字节数,Runtime.maxMemory() 返回最大内存的字节数。

3)Java 中堆和栈有什么区别?

JVM 中堆和栈属于不同的内存区域,使用目的也不同。栈常用于保存方法帧和局部变量,而对象总是在堆上分配。栈通常都比堆小,也不会在多个线程之间共享,而堆被整个 JVM 的所有线程共享。

4)Minor GC 的耗时

标记过程的耗时。

复制过程的耗时。

如果开启了 GC 日志,打印日志的耗时。

5)Survivor 的意义

Survivor 的存在意义是减少被送到老年代的对象,进而减少 Full GC 的发生

6)Survivor 为什么要划分为两块

解决内存碎片的问题。JVM 把新生代中的 Survivor 区分为两块,一块用来放存活对象,另一块什么都不放。当新生代发生 Minor GC 时,把 Eden 区中存活的对象和一块用来放存活对象的 Survivor 区中的存活对象复制到另一块 Survivor 区中,并且清空 Eden 区和当前这块 Survivor 区。

参数在哪里配置:

在哪里设置,分好几种情况: 

1、集成开发环境下启动并使用JVM,如eclipse需要修改根目录文件eclipse.ini; 

2、Windows服务器下安装版Tomcat,可使用Tomcat7w.exe工具(tomcat目录下)和直接修改注册表两种方式修改Jvm参数; 

3、Windows服务器解压版Tomcat注册Windows服务,方法同上; 

4、解压版本的Tomcat, 通过startup.bat启动tomcat加载配置的,在tomcat 的bin 下catalina.bat 文件内添加; 

5、Linux服务器Tomcat设置JVM,修改TOMCAT_HOME/bin/catalina.sh;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值