Skip to content

Instantly share code, notes, and snippets.

@sgykfjsm
Last active August 29, 2015 14:16
Show Gist options
  • Save sgykfjsm/bd2753a2eef8e84fc983 to your computer and use it in GitHub Desktop.
Save sgykfjsm/bd2753a2eef8e84fc983 to your computer and use it in GitHub Desktop.
JVMのパラメータチューニングのために"java.lang.OutOfMemoryError"を発生させたい
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryPoolMXBean;
import java.lang.management.MemoryUsage;
public class OOM1 {
private static void output() {
java.util.List<MemoryPoolMXBean> beans =
ManagementFactory.getMemoryPoolMXBeans();
for(MemoryPoolMXBean bean : beans) {
MemoryPoolMXBean permgenBean = null;
if(bean.getName().toLowerCase().indexOf("perm gen") >= 0) {
permgenBean = bean;
MemoryUsage currentUsage = permgenBean.getUsage();
int percentageUsed = (int)((currentUsage.getUsed() * 100)
/ currentUsage.getMax());
System.out.print("FreeMem: " + Runtime.getRuntime().freeMemory());
System.out.println(" Permgen " + currentUsage.getUsed() +
" of " + currentUsage.getMax() +
" (" + percentageUsed + "%)");
break;
}
}
}
public static void main(String[] args) {
output();
main(new String[] { // http://stackoverflow.com/a/12882135
(args[0] + args[0]).intern()
});
}
}
@sgykfjsm
Copy link
Author

sgykfjsm commented Mar 7, 2015

ついでにVagrantfileもアップしておく。

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
$script = <<SCRIPT

echo Installing depedencies...
sudo yum check-update
sudo yum -y update
sudo yum install -y java-1.7.0-openjdk.x86_64 java-1.7.0-openjdk-devel.x86_64

SCRIPT
#-------
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos65"
  # curl --location --remote-name http://dl.dropbox.com/u/9227672/CentOS-6.0-x86_64-netboot-4.1.6.box
  config.vm.box_url = "/Users/sgyk/local/vagrant/box/CentOS-6.0-x86_64-netboot-4.1.6-Minimal.box"
  config.cache.auto_detect = true
  config.vm.provision "shell", inline: $script
  config.vm.synced_folder "share/", "/home/vagrant/share"

  config.vm.define :serf1 do |serf1|
    serf1.vm.hostname = "nativememory"
    serf1.vm.network :private_network, ip: "192.168.56.201"
    serf1.vm.provider "virtualbox" do |v|
      v.customize ["modifyvm", :id, "--memory", 512]
      v.name = "nativememory"
    end
  end

end

@sgykfjsm
Copy link
Author

sgykfjsm commented Mar 7, 2015

余談だけど、Vagrantで共有フォルダが作れない場合は、ゲストOSの/etc/yum.confで

exclude=kernel*

# exclude=kernel*

にして、

sudo yum update -y kernel

をしてから

$ vagrant plugin install vagrant-vbguest
$ vagrant reload --provision

とすれば良い。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment